aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJán Sučan <sucanjan@fit.cvut.cz>2017-05-10 15:13:29 +0200
committerJán Sučan <sucanjan@fit.cvut.cz>2017-05-10 15:13:29 +0200
commit02e24f0f533fe904c3a5275c4060c10c38d7c17a (patch)
tree19d05c60e3d6a6782c4712de960a8f6705054063
Uvodny commit, subory su rovnake ako na CD prilozenom k vytlacenemu texu bakalarskej prace, naviac je pridany len subor LICENCIA
-rwxr-xr-xCMakeLists.txt100
-rwxr-xr-xExitCodes.hpp12
-rwxr-xr-xExitException.cpp13
-rwxr-xr-xExitException.hpp19
-rwxr-xr-xHelpMessage.txt56
-rw-r--r--LICENCIA54
-rwxr-xr-xLogger.cpp73
-rwxr-xr-xLogger.hpp23
-rwxr-xr-xMcu.cpp422
-rwxr-xr-xMcu.hpp37
-rwxr-xr-xMcuSpecifics.hpp26
-rwxr-xr-xMcuSt10f168/CMakeLists.txt26
-rwxr-xr-xMcuSt10f168/McuSt10f168.cpp173
-rwxr-xr-xMcuSt10f168/McuSt10f168.hpp27
-rwxr-xr-xMcuSt10f269/CMakeLists.txt26
-rwxr-xr-xMcuSt10f269/McuSt10f269.cpp102
-rwxr-xr-xMcuSt10f269/McuSt10f269.hpp25
-rwxr-xr-xSerialPort/CMakeLists.txt19
-rwxr-xr-xSerialPort/SerialPort.cpp157
-rwxr-xr-xSerialPort/SerialPort.hpp37
-rwxr-xr-xSerialPort/SerialPortFactory.cpp21
-rwxr-xr-xSerialPort/SerialPortFactory.hpp13
-rwxr-xr-xSerialPort/SerialPortUnix.cpp285
-rwxr-xr-xSerialPort/SerialPortUnix.hpp35
-rwxr-xr-xSerialPort/SerialPortWin32.cpp238
-rwxr-xr-xSerialPort/SerialPortWin32.hpp49
-rwxr-xr-xUserConfig.cpp375
-rwxr-xr-xUserConfig.hpp67
-rwxr-xr-xfirmware/ident/Objects/ident.SBRbin0 -> 73 bytes
-rwxr-xr-xfirmware/ident/Objects/ident.binbin0 -> 222 bytes
-rwxr-xr-xfirmware/ident/ident.a6627
-rwxr-xr-xfirmware/ident/ident.uvgui.jan1360
-rwxr-xr-xfirmware/ident/ident.uvopt262
-rwxr-xr-xfirmware/ident/ident.uvproj314
-rwxr-xr-xfirmware/include/COMMON.INC30
-rwxr-xr-xfirmware/include/SHELL.INC51
-rwxr-xr-xfirmware/include/SUBROUTINES.INC177
-rwxr-xr-xfirmware/main.uvmpw31
-rwxr-xr-xfirmware/main.uvmpw.uvgui.jan1306
-rwxr-xr-xfirmware/st10f168/Objects/st10f168.SBRbin0 -> 67 bytes
-rwxr-xr-xfirmware/st10f168/Objects/st10f168.binbin0 -> 2042 bytes
-rwxr-xr-xfirmware/st10f168/st10f168.a66273
-rwxr-xr-xfirmware/st10f168/st10f168.uvgui.jan1360
-rwxr-xr-xfirmware/st10f168/st10f168.uvopt262
-rwxr-xr-xfirmware/st10f168/st10f168.uvproj314
-rwxr-xr-xfirmware/st10f269/Objects/st10f269.SBRbin0 -> 67 bytes
-rwxr-xr-xfirmware/st10f269/Objects/st10f269.binbin0 -> 2048 bytes
-rwxr-xr-xfirmware/st10f269/st10f269.a66422
-rwxr-xr-xfirmware/st10f269/st10f269.uvgui.jan1360
-rwxr-xr-xfirmware/st10f269/st10f269.uvopt262
-rwxr-xr-xfirmware/st10f269/st10f269.uvproj314
-rwxr-xr-xfirmware/stage_1/Objects/stage_1.SBRbin0 -> 66 bytes
-rwxr-xr-xfirmware/stage_1/Objects/stage_1.binbin0 -> 28 bytes
-rwxr-xr-xfirmware/stage_1/stage_1.a6643
-rwxr-xr-xfirmware/stage_1/stage_1.uvgui.jan2601
-rwxr-xr-xfirmware/stage_1/stage_1.uvopt269
-rwxr-xr-xfirmware/stage_1/stage_1.uvproj314
-rwxr-xr-xmain.cpp219
-rwxr-xr-xtests/CMakeLists.txt41
-rwxr-xr-xtests/erase.cmake15
-rwxr-xr-xtests/functions.cmake78
-rwxr-xr-xtests/other_operations.cmake5
-rwxr-xr-xtests/read.cmake12
-rwxr-xr-xtests/st10f168/CMakeLists.txt46
-rwxr-xr-xtests/st10f168/erase/ok_b023_erased1
-rwxr-xr-xtests/st10f168/erase/ok_b0_erased1
-rwxr-xr-xtests/st10f168/erase/ok_b1_erasedbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f168/erase/ok_b2_erasedbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f168/erase/ok_b3_erasedbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f168/erase/ok_ones1
-rwxr-xr-xtests/st10f168/erase/zerosbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f168/read/ok_100003Bbin0 -> 100003 bytes
-rwxr-xr-xtests/st10f168/read/ok_1B1
-rwxr-xr-xtests/st10f168/read/ok_262144Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f168/read/randombin0 -> 262144 bytes
-rwxr-xr-xtests/st10f168/write/0B0
-rwxr-xr-xtests/st10f168/write/160Kbin0 -> 163840 bytes
-rwxr-xr-xtests/st10f168/write/160K_1Bbin0 -> 163841 bytes
-rwxr-xr-xtests/st10f168/write/16Kbin0 -> 16384 bytes
-rwxr-xr-xtests/st10f168/write/16K_1Bbin0 -> 16385 bytes
-rwxr-xr-xtests/st10f168/write/1B1
-rwxr-xr-xtests/st10f168/write/256K_1Bbin0 -> 262145 bytes
-rwxr-xr-xtests/st10f168/write/64Kbin0 -> 65536 bytes
-rwxr-xr-xtests/st10f168/write/64K_1Bbin0 -> 65537 bytes
-rwxr-xr-xtests/st10f168/write/ok_160Kbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f168/write/ok_160K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f168/write/ok_16Kbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f168/write/ok_16K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f168/write/ok_1B1
-rwxr-xr-xtests/st10f168/write/ok_64Kbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f168/write/ok_64K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f168/write/ok_ones1
-rwxr-xr-xtests/st10f168/write/randombin0 -> 262144 bytes
-rwxr-xr-xtests/st10f168/write/zerosbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/CMakeLists.txt53
-rwxr-xr-xtests/st10f269/erase/ok_b0_erased1
-rwxr-xr-xtests/st10f269/erase/ok_b1246_erasedbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/erase/ok_b1_erasedbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/erase/ok_b2_erasedbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/erase/ok_b3_erasedbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/erase/ok_b4_erasedbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/erase/ok_b5_erasedbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/erase/ok_b6_erasedbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/erase/ok_ones1
-rwxr-xr-xtests/st10f269/erase/zerosbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/read/ok_100003Bbin0 -> 100003 bytes
-rwxr-xr-xtests/st10f269/read/ok_1B1
-rwxr-xr-xtests/st10f269/read/ok_262144Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/read/randombin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/0B0
-rwxr-xr-xtests/st10f269/write/128Kbin0 -> 131072 bytes
-rwxr-xr-xtests/st10f269/write/128K_1Bbin0 -> 131073 bytes
-rwxr-xr-xtests/st10f269/write/16Kbin0 -> 16384 bytes
-rwxr-xr-xtests/st10f269/write/16K_1Bbin0 -> 16385 bytes
-rwxr-xr-xtests/st10f269/write/192Kbin0 -> 196608 bytes
-rwxr-xr-xtests/st10f269/write/192K_1Bbin0 -> 196609 bytes
-rwxr-xr-xtests/st10f269/write/1B1
-rwxr-xr-xtests/st10f269/write/24Kbin0 -> 24576 bytes
-rwxr-xr-xtests/st10f269/write/24K_1Bbin0 -> 24577 bytes
-rwxr-xr-xtests/st10f269/write/256K_1Bbin0 -> 262145 bytes
-rwxr-xr-xtests/st10f269/write/32Kbin0 -> 32768 bytes
-rwxr-xr-xtests/st10f269/write/32K_1Bbin0 -> 32769 bytes
-rwxr-xr-xtests/st10f269/write/64Kbin0 -> 65536 bytes
-rwxr-xr-xtests/st10f269/write/64K_1Bbin0 -> 65537 bytes
-rwxr-xr-xtests/st10f269/write/mod/backup/128K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/mod/backup/16K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/mod/backup/192K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/mod/backup/24K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/mod/backup/32K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/mod/backup/64K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/mod/ok/ok_128K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/mod/ok/ok_16K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/mod/ok/ok_192K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/mod/ok/ok_24K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/mod/ok/ok_32K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/mod/ok/ok_64K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/mod/r.binbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/ok_128Kbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/ok_128K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/ok_16Kbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/ok_16K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/ok_192Kbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/ok_192K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/ok_1B1
-rwxr-xr-xtests/st10f269/write/ok_24Kbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/ok_24K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/ok_32Kbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/ok_32K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/ok_64Kbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/ok_64K_1Bbin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/ok_ones1
-rwxr-xr-xtests/st10f269/write/randombin0 -> 262144 bytes
-rwxr-xr-xtests/st10f269/write/zerosbin0 -> 262144 bytes
-rwxr-xr-xtests/write.cmake11
-rwxr-xr-xutils/xd/CMakeLists.txt5
-rwxr-xr-xutils/xd/xd.c542
156 files changed, 14902 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100755
index 0000000..31e971d
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,100 @@
+cmake_minimum_required (VERSION 3.3)
+project (Main VERSION 1.0.0)
+
+add_compile_options (-Wall -Werror -pedantic -g)
+
+# Path to common firmware binary files
+set (FwPrefix ${CMAKE_CURRENT_SOURCE_DIR}/firmware)
+set (FwCommonPrefix ${FwPrefix})
+set(FwCommon
+ ${FwCommonPrefix}/stage_1/Objects/stage_1.bin
+ ${FwCommonPrefix}/ident/Objects/ident.bin
+)
+
+# Define program name and version
+add_definitions (-DPROGRAM_NAME="${CMAKE_PROJECT_NAME}")
+add_definitions (-DPROGRAM_VERSION="${PROJECT_VERSION}")
+
+# Platform specific options
+if (WIN32)
+ add_definitions (-DWIN32)
+ set (DefaultSerialPortName COM1)
+else()
+ add_definitions (-DUNIX)
+ set (DefaultSerialPortName /dev/ttyUSB0)
+endif()
+add_definitions(-DDEFAULT_SERIAL_PORT_NAME="${DefaultSerialPortName}")
+
+# Utility, to dump binary file as a C declaration
+add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR}/utils/xd)
+
+# Generate firmware header files
+include_directories (${CMAKE_CURRENT_BINARY_DIR})
+
+# Function generates header files containing arrays with binary
+# files data. Name transformation is: <name>.bin -> fw_<name>.hpp
+#
+# Arguments:
+# GenCmd - path to the generator command
+# NameSpc - namespace for C++ definitions in the header file
+# FwList - list of binary files
+# OutDir - directory where the header files will be placed
+function (generate_headers_from_binaries GenCmd NameSpc FwList OutDir)
+ foreach (FILE ${FwList})
+ get_filename_component(NAME "${FILE}" NAME_WE)
+ set (OutHeader ${OutDir}/fw_${NAME}.hpp)
+ # set (NameSpc FwCommon)
+ add_custom_command (
+ OUTPUT ${OutHeader}
+ COMMAND ${GenCmd} -dfw_${NAME} -p${NameSpc} ${FILE} ${OutHeader}
+ DEPENDS ${GenCmd} ${FILE}
+ )
+ endforeach()
+endfunction()
+
+generate_headers_from_binaries (
+ "$<TARGET_FILE:xd>"
+ FwCommon
+ "${FwCommon}"
+ "${CMAKE_CURRENT_BINARY_DIR}"
+)
+
+# Generate header with help message
+add_custom_command (
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/help_message.hpp
+ COMMAND $<TARGET_FILE:xd> -thelp_message -pHelpMessage ${CMAKE_SOURCE_DIR}/HelpMessage.txt ${CMAKE_CURRENT_BINARY_DIR}/help_message.hpp
+ DEPENDS $<TARGET_FILE:xd> ${CMAKE_SOURCE_DIR}/HelpMessage.txt
+ )
+
+include_directories (
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/McuSt10f269
+ ${CMAKE_CURRENT_SOURCE_DIR}/McuSt10f168
+ ${CMAKE_CURRENT_SOURCE_DIR}/SerialPort
+ )
+add_subdirectory (McuSt10f269)
+add_subdirectory (McuSt10f168)
+add_subdirectory (SerialPort)
+add_executable (main
+ ExitException.cpp
+ Logger.cpp
+ UserConfig.cpp
+ Mcu.cpp
+ main.cpp
+ ${CMAKE_CURRENT_BINARY_DIR}/fw_stage_1.hpp
+ ${CMAKE_CURRENT_BINARY_DIR}/fw_ident.hpp
+ ${CMAKE_CURRENT_BINARY_DIR}/help_message.hpp
+ )
+target_link_libraries (main McuSt10f269 McuSt10f168 SerialPort)
+
+set_target_properties (main PROPERTIES
+ CXX_STANDARD 11
+ CXX_STANDARD_REQUIRED ON
+ CXX_EXTENSIONS OFF
+ )
+
+# Tests
+enable_testing ()
+
+include (${CMAKE_SOURCE_DIR}/tests/st10f168/CMakeLists.txt)
+include (${CMAKE_SOURCE_DIR}/tests/st10f269/CMakeLists.txt)
diff --git a/ExitCodes.hpp b/ExitCodes.hpp
new file mode 100755
index 0000000..6c903d3
--- /dev/null
+++ b/ExitCodes.hpp
@@ -0,0 +1,12 @@
+#ifndef EXIT_CODES_HPP
+#define EXIT_CODES_HPP 1
+
+#define EXIT_MAIN_NOOP 1
+#define EXIT_USER_CONFIG 2
+#define EXIT_MAIN_FILE_INOUT 3
+#define EXIT_MAIN_PROG_VERIFY 4
+#define EXIT_MAIN_SIGNAL 5
+#define EXIT_MCU 6
+#define EXIT_SERIAL_PORT 7
+
+#endif
diff --git a/ExitException.cpp b/ExitException.cpp
new file mode 100755
index 0000000..d890bba
--- /dev/null
+++ b/ExitException.cpp
@@ -0,0 +1,13 @@
+#include "ExitException.hpp"
+
+CExitException::CExitException(const string & whatArg, int returnValue) :
+ runtime_error(whatArg), mReturnValue(returnValue)
+{
+ ;
+}
+
+int
+CExitException::getReturnValue()
+{
+ return mReturnValue;
+}
diff --git a/ExitException.hpp b/ExitException.hpp
new file mode 100755
index 0000000..ca21bd1
--- /dev/null
+++ b/ExitException.hpp
@@ -0,0 +1,19 @@
+#ifndef EXIT_EXCEPTION_HPP
+#define EXIT_EXCEPTION_HPP 1
+
+#include <string>
+#include <stdexcept>
+
+using std::runtime_error;
+using std::string;
+
+class CExitException : public runtime_error
+{
+private:
+ int mReturnValue;
+public:
+ CExitException(const string & whatArg, int returnValue);
+ int getReturnValue();
+};
+
+#endif
diff --git a/HelpMessage.txt b/HelpMessage.txt
new file mode 100755
index 0000000..8ecb927
--- /dev/null
+++ b/HelpMessage.txt
@@ -0,0 +1,56 @@
+Usage: %ARG% OPERATION OPARGS
+
+ OPERATION Can be one of these: help, version, speeds, ident, erase,
+ read, write.
+
+ OPARGS Are arguments for selected operation. Note that the same
+ argument can have a different meaning when used with
+ different OPERATION.
+
+Common options:
+ -p PORTNAME Name of a serial port device to use.
+
+ -s SPEED Serial line communication speed in Bd. Note that the
+ SPEED is a number without 'Bd' suffix. Default SPEED
+ is 19200.
+
+ -v Be more verbose.
+
+ -f FREQ CPU frequency in MHz. Real number with dot as a decimal
+ separator. This is used only by ST10F168 MCU and is
+ mandatory for it.
+
+ -g Print progress for read and write operations.
+
+Operations:
+ help
+ Print this help message.
+
+ version
+ Print name and version information of this program.
+
+ speeds
+ Print list of serial line speeds available.
+
+ ident
+ Print name of supported MCU connected.
+
+ erase [-b n[,n]...]
+ -b n[,n]... Numbers of sectors to erase. Without this option whole
+ FLASH memory is erased.
+
+ read [-n COUNT] FILE
+ -n COUNT Read only COUNT bytes from address 0 instead of whole memory.
+
+ FILE Name of a file where to write content of memory.
+
+ write [-e,-c] FILE
+ -e Erase whole FLASH memory before writing data. Without this
+ option only blocks which are going to be programmed are
+ erased.
+
+ -c Check written data by reading it back and comparing with FILE
+ data. Without this option result of write operation is
+ checked only by MCU FLASH memory controller.
+
+ FILE Name of a file containing data to write to MCU FLASH memory.
diff --git a/LICENCIA b/LICENCIA
new file mode 100644
index 0000000..e63ddb0
--- /dev/null
+++ b/LICENCIA
@@ -0,0 +1,54 @@
+Slovenský, český a anglický text licencie je prevzatý zo súboru
+FITthesis.cls v archíve vzorových LaTeX šablón FIT ČVUT, ktoré som
+používal pri tvorbe mojej bakalárskej práce:
+
+https://edux.fit.cvut.cz/_media/szz/
+priloha2-smernice_dekana_pro_szz-latex-sablony-160505.zip
+
+V texte mojej bakalárskej práce som zvolil text prehlásenia číslo 5:
+"zcela volné užití pro každého". Text tejto licencie v slovenskom,
+českom a anglickom jazyku citujem:
+
+„Prehlasujem, že som predloženú prácu vypracoval(a) samostatne a že
+som uviedol(uviedla) všetky informačné zdroje v súlade s Metodickým
+pokynom o etickej príprave vysokoškolských záverečných prác.
+Beriem na vedomie, že sa na moju prácu vzťahujú práva a povinnosti
+vyplývajúce zo zákona č. 121/2000 Sb., autorského zákona, v znení
+neskorších predpisov. V súlade s ustanovením § 46 odst. 6 tohoto
+zákona týmto udeľujem bezvýhradné oprávnenie (licenciu) k užívaniu
+tejto mojej práce, a to vrátane všetkých počítačových programov ktoré
+sú jej súčasťou alebo prílohou a tiež všetkej ich dokumentácie (ďalej
+len „Dielo“), a to všetkým osobám, ktoré si prajú Dielo užívať. Tieto
+osoby sú oprávnené Dielo používať akýmkoľvek spôsobom, ktorý neznižuje
+hodnotu Diela (vrátane komerčného využitia). Toto oprávnenie je
+časovo, územne a množstevne neobmedzené.“
+
+„Prohlašuji, že jsem předloženou práci vypracoval(a) samostatně a že
+jsem uvedl(a) veškeré použité informační zdroje v souladu s Metodickým
+pokynem o etické přípravě vysokoškolských závěrečných prací.
+Beru na vědomí, že se na moji práci vztahují práva a povinnosti
+vyplývající ze zákona č. 121/2000 Sb., autorského zákona, ve znění
+pozdějších předpisů. V souladu s ust. § 46 odst. 6 tohoto zákona
+tímto uděluji nevýhradní oprávnění (licenci) k užití této mojí práce,
+a to včetně všech počítačových programů, jež jsou její součástí či
+přílohou a veškeré jejich dokumentace (dále souhrnně jen „Dílo“), a to
+všem osobám, které si přejí Dílo užít. Tyto osoby jsou oprávněny Dílo
+užít jakýmkoli způsobem, který nesnižuje hodnotu Díla a za jakýmkoli
+účelem (včetně užití k výdělečným účelům). Toto oprávnění je časově,
+teritoriálně i množstevně neomezené.“
+
+“I hereby declare that the presented thesis is my own work and that I
+have cited all sources of information in accordance with the Guideline
+for adhering to ethical principles when elaborating an academic final
+thesis.
+I acknowledge that my thesis is subject to the rights and obligations
+stipulated by the Act No. 121/2000 Coll., the Copyright Act, as
+amended. In accordance with Article 46(6) of the Act, I hereby grant a
+nonexclusive authorization (license) to utilize this thesis,
+including any and all computer programs incorporated therein or
+attached thereto and all corresponding documentation (hereinafter
+collectively referred to as the “Work”), to any and all persons that
+wish to utilize the Work. Such persons are entitled to use the Work in
+any way (including for-profit purposes) that does not detract from its
+value. This authorization is not limited in terms of time, location
+and quantity.”
diff --git a/Logger.cpp b/Logger.cpp
new file mode 100755
index 0000000..142442e
--- /dev/null
+++ b/Logger.cpp
@@ -0,0 +1,73 @@
+#include "Logger.hpp"
+#include "ExitException.hpp"
+#include <sstream>
+
+using std::endl;
+using std::cout;
+using std::cerr;
+using std::flush;
+using std::hex;
+using std::uppercase;
+using std::ostringstream;
+
+bool CLogger::mLogInfo = false;
+int CLogger::mProgressLastPercent = -1;
+
+void
+CLogger::error(const string & msg, int returnValue)
+{
+ cerr << "ERROR: " << msg << endl;
+ throw CExitException(msg, returnValue);
+}
+
+void
+CLogger::warning(const string & msg)
+{
+ cerr << "WARNING: " << msg << endl;
+}
+
+void
+CLogger::info(const string & msg)
+{
+ if (!CLogger::mLogInfo)
+ return;
+ cout << "INFO: " << msg << endl;
+}
+
+void
+CLogger::progress(uint32_t b, uint32_t n)
+{
+ if (b > n)
+ b = n;
+
+ double d = n;
+ int p = (int) (b / (d / 100.0));
+ if ((p == 100) && (b != n))
+ p = 99;
+ else if (p > 100)
+ p = 100;
+
+ if (((p == 0) && (p != mProgressLastPercent))
+ || ((p == 100) && (p != mProgressLastPercent))
+ || ((p - mProgressLastPercent) >= LOGGER_PROGRESS_UNIT)) {
+ cout << p << "% (" << b << " B / " << n << " B)" << endl;
+ mProgressLastPercent = p;
+ }
+
+ if (p == 100)
+ mProgressLastPercent = -1;
+}
+
+void
+CLogger::setLogInfo(bool b)
+{
+ mLogInfo = b;
+}
+
+string
+CLogger::decToHex(int dec)
+{
+ ostringstream os;
+ os << "0x" << hex << uppercase << dec;
+ return os.str();
+}
diff --git a/Logger.hpp b/Logger.hpp
new file mode 100755
index 0000000..0925b69
--- /dev/null
+++ b/Logger.hpp
@@ -0,0 +1,23 @@
+#ifndef LOGGER_HPP
+#define LOGGER_HPP 1
+
+#include <iostream>
+
+using std::string;
+
+#define LOGGER_PROGRESS_UNIT 3 // %
+
+class CLogger {
+private:
+ static bool mLogInfo;
+ static int mProgressLastPercent;
+public:
+ static void error(const string & msg, int returnValue);
+ static void warning(const string & msg);
+ static void info(const string & msg);
+ static void progress(uint32_t b, uint32_t n);
+ static void setLogInfo(bool b);
+ static string decToHex(int dec);
+};
+
+#endif
diff --git a/Mcu.cpp b/Mcu.cpp
new file mode 100755
index 0000000..16a0383
--- /dev/null
+++ b/Mcu.cpp
@@ -0,0 +1,422 @@
+#include <Mcu.hpp>
+
+#include "fw_stage_1.hpp"
+#include "fw_ident.hpp"
+#include "ExitCodes.hpp"
+#include "Logger.hpp"
+#include "ExitException.hpp"
+#include "McuSt10f269.hpp"
+#include "McuSt10f168.hpp"
+
+#include <sstream>
+
+using FwCommon::fw_stage_1;
+using FwCommon::fw_stage_1_length;
+using FwCommon::fw_ident;
+using FwCommon::fw_ident_length;
+using std::ostringstream;
+using std::nothrow;
+
+#define FW_1_MAX_LENGTH 32
+#define FW_MAX_LENGTH 2048
+#define BOOTSTRAP_ACK 0xD5
+#define SHELL_ACK 0xAB
+
+#define PAD_BYTE 0xFF
+
+#define CMD_PING 0x00
+#define CMD_ERASE_BLOCKS 0x01
+#define CMD_READ 0x02
+#define CMD_WRITE 0x03
+#define CMD_IDENTIFY 0x04
+#define CMD_ERASE_CHIP 0x05
+
+#define RET_SERIAL_OVERRUN 0x20
+#define RET_BAD_ECHO 0x21
+
+#define JUNK_BYTE_COUNT 128
+
+
+CMcu::CMcu(CSerialPort & serialPort, float mcuFrequency)
+ : mSerialPort(serialPort), mMcuFrequency(mcuFrequency)
+{
+ // Check in which mode MCU is
+ CLogger::info("Sending zero byte");
+ uint8_t ack = CMD_PING;
+ // Send zero byte
+ mSerialPort.write(&ack, 1, 1);
+ // Read response
+ mSerialPort.read(&ack, 1);
+
+ // If some unknown data were received, try to read out junk bytes from
+ // previous operations without collected return status
+ for (int i = 0; (ack != BOOTSTRAP_ACK) && (ack != SHELL_ACK) && (i < JUNK_BYTE_COUNT); ++i) {
+ mSerialPort.read(&ack, 1);
+ }
+
+ uint16_t idchip, idmanuf;
+ uint8_t data[4];
+
+ if (ack == SHELL_ACK) {
+ CLogger::info("Received stage 2 firmware ACK byte " + CLogger::decToHex(ack));
+ CLogger::info("Skipping MCU initialization, NOT LOADING stage 2 firmware");
+
+ // Get IDCHIP and IDMANUF registers using Ident command for initialized MCU
+ CLogger::info("Getting IDMAUNF and IDCHIP registers of already initialized MCU");
+
+ mSerialPort.sendSafeByte(CMD_IDENTIFY);
+ mSerialPort.read(data, 4);
+ decodeIdentData(data, idchip, idmanuf);
+
+ setMcuSpecificsById(idchip, idmanuf);
+ } else if (ack == BOOTSTRAP_ACK) {
+ // Ziskame identifikaciu a nahrame shell mcuSpecfics
+ CLogger::info("Received bootstrap loader ACK byte " + CLogger::decToHex(ack));
+
+ // Write the first stage loader
+ CLogger::info("Writing stage 1 firmware");
+ mSerialPort.write(fw_stage_1, fw_stage_1_length, FW_1_MAX_LENGTH);
+
+ // Get identification
+ CLogger::info("Getting IDMAUNF and IDCHIP registers");
+ mSerialPort.write(fw_ident, fw_ident_length, FW_MAX_LENGTH);
+ mSerialPort.read(data, 4);
+
+ decodeIdentData(data, idchip, idmanuf);
+ setMcuSpecificsById(idchip, idmanuf);
+
+ // Load stage 2 firmware
+ CLogger::info("Writing stage 2 firmware");
+ mSerialPort.write(mMcuSpecifics->getFirmware(),
+ mMcuSpecifics->getFirmwareLength(), FW_MAX_LENGTH);
+ // Wait for initialization end
+ uint16_t r = mSerialPort.readWord();
+ if (r != 0x00) {
+ CLogger::error("Cannot initialize MCU: " + getMessageForRetCode(r), EXIT_MCU);
+ }
+ } else {
+ CLogger::error("Received unknown ack byte " + CLogger::decToHex(ack) +
+ ", expected " + CLogger::decToHex(BOOTSTRAP_ACK) +
+ " or " + CLogger::decToHex(SHELL_ACK), EXIT_MCU);
+ }
+}
+
+void
+CMcu::decodeIdentData(uint8_t data[4], uint16_t & idmanuf, uint16_t & idchip)
+{
+ idmanuf = 0;
+ idmanuf |= data[0];
+ idmanuf |= (data[1]) << 8;
+
+ idchip = 0;
+ idchip |= data[2];
+ idchip |= (data[3]) << 8;
+}
+
+
+string
+CMcu::getMessageForRetCode(uint16_t ret)
+{
+ string s;
+
+ switch (ret) {
+ case RET_SERIAL_OVERRUN:
+ s = "MCU serial receiver buffer overrun, use lower serial speed";
+ break;
+ case RET_BAD_ECHO:
+ s = "MCU received corrupted double word value";
+ break;
+ default:
+ if (mMcuSpecifics == 0 || (s = mMcuSpecifics->getMessageForRetCode(ret)).empty())
+ s = "Unknown MCU return code: " + CLogger::decToHex(ret);
+ break;
+ }
+
+ return s;
+}
+
+void
+CMcu::setMcuSpecificsById(uint16_t idmanuf, uint16_t idchip)
+{
+ if (CMcuSt10f269::hasThisId(idmanuf, idchip)) {
+ CLogger::info("ST10F269 MCU found");
+ mMcuSpecifics.reset(new CMcuSt10f269());
+ } else if (CMcuSt10f168::hasThisId(idmanuf, idchip)) {
+ CLogger::info("ST10F168 MCU found");
+ mMcuSpecifics.reset(new CMcuSt10f168());
+ } else {
+ ostringstream os;
+ os << "Received unknown MCU identification registers values: ";
+ os << "IDMANUF=" << CLogger::decToHex(idmanuf);
+ os << " IDCHIP=" << CLogger::decToHex(idchip);
+ CLogger::error(os.str(), EXIT_MCU);
+ }
+}
+
+// -----------------------------------------------------------------------------
+// Operacie
+// -----------------------------------------------------------------------------
+
+void
+CMcu::sendShellCommand(uint8_t cmd)
+{
+ // Check needed frequency
+ if ((mMcuSpecifics->getName() != "ST10F168") && (mMcuFrequency > 0))
+ CLogger::info("Ignoring -f option for this MCU");
+ if ((mMcuSpecifics->getName() == "ST10F168") && (mMcuFrequency == 0))
+ CLogger::error("Missing -f option for MCU " + mMcuSpecifics->getName(), EXIT_MCU);
+
+ mSerialPort.sendSafeByte(cmd);
+ // Write configuration data
+ list<uint16_t> d = mMcuSpecifics->getConfigData(mMcuFrequency);
+ list<uint16_t>::const_iterator it;
+ for (it = d.begin(); it != d.end(); ++it)
+ mSerialPort.sendSafeWord(*it);
+}
+
+string
+CMcu::ident()
+{
+ return mMcuSpecifics->getName();
+}
+
+void
+CMcu::erase()
+{
+ uint16_t r;
+
+ sendShellCommand(CMD_ERASE_CHIP);
+ // Wait for return status of erase operation
+ mSerialPort.setReadTimeout(mMcuSpecifics->getEraseTimeout());
+ r = mSerialPort.readWord();
+ mSerialPort.setDefaultTimeout();
+
+ if (r != 0)
+ CLogger::error(getMessageForRetCode(r), EXIT_MCU);
+}
+
+void
+CMcu::erase(uint32_t startAddr, uint32_t endAddr)
+{
+ list<uint32_t> bs = mMcuSpecifics->getBlockSizes();
+
+ // Block address space
+ typedef struct {
+ uint32_t a;
+ uint32_t b;
+ } range_t;
+
+ unique_ptr<range_t []> ba(new(nothrow) range_t[bs.size()]);
+
+ if (!ba)
+ CLogger::error("Cannot allocate memory", EXIT_MCU);
+
+ list<uint32_t>::const_iterator it;
+ unsigned int i;
+ uint32_t a = 0;
+ for (i = 0, it = bs.begin(); it != bs.end(); ++it, ++i) {
+ ba[i].a = a;
+ a = (*it * 1024);
+ ba[i].b = ba[i].a + a - 1;
+ a = ba[i].a + a;
+ }
+
+ uint32_t lastValidAddr = mMcuSpecifics->getFlashSize() - 1;
+
+ if (startAddr > lastValidAddr) {
+ ostringstream os;
+ os << "Start erase address " << startAddr << " is out of range [0," << lastValidAddr << "]";
+ CLogger::error(os.str(), EXIT_MCU);
+ }
+
+ if (endAddr > lastValidAddr) {
+ ostringstream os;
+ os << "End erase address " << endAddr << " is out of range [0," << lastValidAddr << "]";
+ CLogger::error(os.str(), EXIT_MCU);
+ }
+
+ if (startAddr > endAddr) {
+ ostringstream os;
+ os << "Start erase address " << startAddr << " is greater than end erase address " << endAddr;
+ CLogger::error(os.str(), EXIT_MCU);
+ }
+
+ // Construct block list
+ list<unsigned int> l;
+ // Find block containing startAddr
+ for (i = 0; i < bs.size(); ++i) {
+ if (startAddr >= ba[i].a && startAddr <= ba[i].b)
+ break;
+ }
+ // Find blocks up to the block containing endAddr
+ for ( ; i < bs.size(); ++i) {
+ l.push_back(i);
+ if (endAddr >= ba[i].a && endAddr <= ba[i].b)
+ break;
+ }
+
+ // Erase blocks covering the range
+ erase(l);
+}
+
+void
+CMcu::erase(list<unsigned int> blockList)
+{
+ // Construct mask
+ uint16_t mask = 0;
+ list<unsigned int>::const_iterator it;
+ unsigned int bc = mMcuSpecifics->getBlockSizes().size();
+
+ for (it = blockList.begin(); it != blockList.end(); ++it) {
+ if (*it >= bc) {
+ ostringstream os;
+ os << "Block number " << *it << " is out of range [0," << (bc - 1) << "]";
+ CLogger::error(os.str(), EXIT_MCU);
+ }
+ mask |= 1 << *it;
+ }
+ ostringstream os;
+ os << "Erasing blocks: ";
+ for (it = blockList.begin(); it != blockList.end(); ++it) {
+ if (it != blockList.begin())
+ os << ",";
+ os << *it;
+ }
+ os << " (mask = " << CLogger::decToHex(mask) << ")";
+ CLogger::info(os.str());
+
+ // Erase blocks
+ sendShellCommand(CMD_ERASE_BLOCKS);
+ mSerialPort.sendSafeWord(mask);
+ // Read status
+ mSerialPort.setReadTimeout(mMcuSpecifics->getEraseTimeout());
+ uint16_t r = mSerialPort.readWord();
+
+ if (r != 0x00)
+ CLogger::error(getMessageForRetCode(r), EXIT_MCU);
+
+ mSerialPort.setDefaultTimeout();
+}
+
+void
+CMcu::write(vector<uint8_t> data, bool printProgress)
+{
+ if ((data.size() < 1) || (data.size() > mMcuSpecifics->getFlashSize())) {
+ ostringstream os;
+ os << "Data length " << data.size() << " to write is not in range ";
+ os << "[1-" << mMcuSpecifics->getFlashSize() << "]";
+ CLogger::error(os.str(), EXIT_MCU);
+ }
+ // Number of bytes to be written
+ uint32_t bw = ((data.size() % 2) == 1) ? data.size() + 1 : data.size();
+ ostringstream os;
+ os << "Writing " << data.size() << " bytes";
+ if (bw != data.size())
+ os << " + 1 byte pad";
+ CLogger::info(os.str());
+ // Write command
+ sendShellCommand(CMD_WRITE);
+ // Write number of bytes to read
+ mSerialPort.sendSafeDoubleWord(bw);
+ // Write by 1024 blocks and read return status after each one
+ uint32_t i = 0;
+
+ if (printProgress)
+ CLogger::progress(i, data.size());
+
+ while (i < bw) {
+ uint32_t s = ((bw - i) > 1024) ? 1024 : (bw - i);
+ if (((i + s) >= bw) && (bw != data.size())) {
+ // Going to write last block of size increased by pad
+ mSerialPort.write(data.data() + i, s - 1, s - 1);
+ uint8_t b = PAD_BYTE;
+ mSerialPort.write(&b, 1, 1);
+ } else {
+ mSerialPort.write(data.data() + i, s, s);
+ }
+ i += s;
+
+ if (printProgress)
+ CLogger::progress(i, data.size());
+
+ // Read status
+ uint16_t r = mSerialPort.readWord();
+ if (r == 0) {
+ // Read position
+ uint32_t u = mSerialPort.readDoubleWord();
+ // Check position
+ if ((bw - u) != i) {
+ ostringstream os;
+ os << "Serial communication error: position status mismatch, expected " << i << ", have " << (bw - u);
+ CLogger::error(os.str(), EXIT_MCU);
+ }
+ } else {
+ CLogger::error(getMessageForRetCode(r), EXIT_MCU);
+ }
+ }
+}
+
+vector<uint8_t>
+CMcu::read(bool printProgress)
+{
+ return read(mMcuSpecifics->getFlashSize(), printProgress);
+}
+
+vector<uint8_t>
+CMcu::read(uint32_t size, bool printProgress)
+{
+ uint32_t r;
+
+ if ((size < 1) || (size > mMcuSpecifics->getFlashSize())) {
+ ostringstream os;
+ os << "Data length " << size << " to read is outside address range ";
+ os << "[1-" << mMcuSpecifics->getFlashSize() << "]";
+ CLogger::error(os.str(), EXIT_MCU);
+ }
+
+ // Check if size is odd or even number
+ r = size;
+ if ((size % 2) == 1)
+ r++;
+ // Write command
+ sendShellCommand(CMD_READ);
+ // Write number of bytes to read
+ mSerialPort.sendSafeDoubleWord(r);
+ // Get data from FLASH memory by 1024 byte blocks
+ uint32_t i = 0;
+ if (printProgress)
+ CLogger::progress(i, size);
+
+ vector<uint8_t> data;
+
+ while (i < r) {
+ uint32_t s = ((r - i) > 1024) ? 1024 : (r - i);
+ // Read data
+ data.resize(data.size() + s);
+ mSerialPort.read(data.data() + i , s);
+ i += s;
+
+ if (printProgress)
+ CLogger::progress(i, size);
+
+ // Read status
+ uint16_t t = mSerialPort.readWord();
+ if (t == 0) {
+ // Read position
+ uint32_t u = mSerialPort.readDoubleWord();
+ // Check position
+ if ((r - u) != i) {
+ ostringstream os;
+ os << "Serial communication error: position status mismatch";
+ os << ", expected " << i << " has " << (r - u);
+ CLogger::error(os.str(), EXIT_MCU);
+ }
+ } else {
+ CLogger::error(getMessageForRetCode(r), EXIT_MCU);
+ }
+ }
+
+ // Discard possible rounding/pad byte
+ data.resize(size);
+ return data;
+}
diff --git a/Mcu.hpp b/Mcu.hpp
new file mode 100755
index 0000000..a05dafe
--- /dev/null
+++ b/Mcu.hpp
@@ -0,0 +1,37 @@
+#ifndef MCU_HPP
+#define MCU_HPP 1
+
+#include "SerialPort.hpp"
+#include "McuSpecifics.hpp"
+
+#include <cstdint>
+#include <vector>
+#include <memory>
+
+using std::vector;
+using std::unique_ptr;
+
+class CMcu {
+private:
+ CSerialPort & mSerialPort;
+ unique_ptr<IMcuSpecifics> mMcuSpecifics;
+ float mMcuFrequency;
+
+ void decodeIdentData(uint8_t data[4], uint16_t & idmanuf, uint16_t & idchip);
+ void setMcuSpecificsById(uint16_t idmanuf, uint16_t idchip);
+ string getMessageForRetCode(uint16_t ret);
+ void sendShellCommand(uint8_t cmd);
+
+public:
+ CMcu(CSerialPort & serialPort, float mcuFrequency);
+
+ void erase();
+ void erase(list<unsigned int> blockList);
+ void erase(uint32_t startAddr, uint32_t endAddr);
+ void write(vector<uint8_t> data, bool printProgress);
+ vector<uint8_t> read(bool printProgress);
+ vector<uint8_t> read(uint32_t size, bool printProgress);
+ string ident();
+};
+
+#endif
diff --git a/McuSpecifics.hpp b/McuSpecifics.hpp
new file mode 100755
index 0000000..9dac153
--- /dev/null
+++ b/McuSpecifics.hpp
@@ -0,0 +1,26 @@
+#ifndef MCU_SPECIFICS_HPP
+#define MCU_SPECIFICS_HPP 1
+
+#include "SerialPort.hpp"
+#include "McuSpecifics.hpp"
+
+#include <cstdint>
+#include <list>
+
+using std::list;
+
+class IMcuSpecifics {
+public:
+ virtual ~IMcuSpecifics() {};
+
+ virtual string getName() = 0;
+ virtual uint8_t *getFirmware() = 0;
+ virtual int getFirmwareLength() = 0;
+ virtual const list<uint32_t> getBlockSizes() = 0;
+ virtual uint32_t getFlashSize() = 0;
+ virtual int getEraseTimeout() = 0;
+ virtual string getMessageForRetCode(uint16_t ret) = 0;
+ virtual const list<uint16_t> getConfigData(float mcuFrequency) = 0;
+};
+
+#endif
diff --git a/McuSt10f168/CMakeLists.txt b/McuSt10f168/CMakeLists.txt
new file mode 100755
index 0000000..786a909
--- /dev/null
+++ b/McuSt10f168/CMakeLists.txt
@@ -0,0 +1,26 @@
+# Path to firmware binary files for ST10F168
+set (FwSt10f168Prefix ${FwPrefix})
+set(FwSt10f168
+ ${FwSt10f168Prefix}/st10f168/Objects/st10f168.bin
+ )
+
+# Generate firmware header files
+include_directories (${CMAKE_CURRENT_BINARY_DIR})
+
+generate_headers_from_binaries (
+ "$<TARGET_FILE:xd>"
+ FwSt10f168
+ "${FwSt10f168}"
+ "${CMAKE_CURRENT_BINARY_DIR}"
+ )
+
+add_library (McuSt10f168 STATIC
+ McuSt10f168.cpp
+ ${CMAKE_CURRENT_BINARY_DIR}/fw_st10f168.hpp
+)
+
+set_target_properties (McuSt10f168 PROPERTIES
+ CXX_STANDARD 11
+ CXX_STANDARD_REQUIRED ON
+ CXX_EXTENSIONS OFF
+)
diff --git a/McuSt10f168/McuSt10f168.cpp b/McuSt10f168/McuSt10f168.cpp
new file mode 100755
index 0000000..6d60a21
--- /dev/null
+++ b/McuSt10f168/McuSt10f168.cpp
@@ -0,0 +1,173 @@
+#include "Logger.hpp"
+#include "ExitCodes.hpp"
+#include "McuSt10f168.hpp"
+#include "fw_st10f168.hpp"
+
+#include <sstream>
+
+using FwSt10f168::fw_st10f168;
+using FwSt10f168::fw_st10f168_length;
+
+#define ST10F168_FLASH_SIZE (256 * 1024)
+#define ST10F168_IDMANUF 0x0400
+#define ST10F168_IDCHIP 0x0A80
+#define ST10F168_ERASE_TIMEOUT 15000 // Ms
+#define ST10F168_MIN_PERIOD 30 // ns
+#define ST10F168_MAX_PERIOD 199 // ns
+#define ST10F168_MAX_FREQ 25 // MHz
+
+using std::ostringstream;
+
+bool
+CMcuSt10f168::hasThisId(uint16_t idmanuf, uint16_t idchip)
+{
+ // Mask out revision bits 3 - 0 from idchip value
+ return ((idmanuf == ST10F168_IDMANUF)
+ && ((idchip & 0xfff0) == ST10F168_IDCHIP));
+}
+
+CMcuSt10f168::CMcuSt10f168()
+{
+ mBlockSizes.push_back(16);
+ mBlockSizes.push_back(48);
+ mBlockSizes.push_back(96);
+ mBlockSizes.push_back(96);
+}
+
+CMcuSt10f168::~CMcuSt10f168()
+{
+ ;
+}
+
+string
+CMcuSt10f168::getName()
+{
+ return string("ST10F168");
+}
+
+uint8_t *
+CMcuSt10f168::getFirmware()
+{
+ return fw_st10f168;
+}
+
+int
+CMcuSt10f168::getFirmwareLength()
+{
+ return fw_st10f168_length;
+}
+
+const list<uint32_t>
+CMcuSt10f168::getBlockSizes()
+{
+ return mBlockSizes;
+}
+
+uint32_t
+CMcuSt10f168::getFlashSize()
+{
+ return ST10F168_FLASH_SIZE;
+}
+
+int
+CMcuSt10f168::getEraseTimeout()
+{
+ return ST10F168_ERASE_TIMEOUT;
+}
+
+string
+CMcuSt10f168::getMessageForRetCode(uint16_t ret)
+{
+ string s;
+
+ switch (ret) {
+ case 0x00:
+ s = "Operation was successful";
+ break;
+ case 0x01:
+ s = "Flash Protection is active";
+ break;
+ case 0x02:
+ s = "Vpp voltage not present";
+ break;
+ case 0x03:
+ s = "Programming operation failed";
+ break;
+ case 0x04:
+ s = "Address value (R1) incorrect; not in Flash address area or odd";
+ break;
+ case 0x05:
+ s = "CPU period out of range (must be between 30 ns and 199 ns)";
+ break;
+ case 0x06:
+ s = "Not enough free space on system stack for proper operation";
+ break;
+ case 0x07:
+ s = "Incorrect bank number (R2,R3) specified";
+ break;
+ case 0x08:
+ s = "Erase operation failed (phase 1)";
+ break;
+ case 0x09:
+ s = "Bad source address for Multiple Word programming command";
+ break;
+ case 0x0A:
+ s = "Bad number of words to be copied in Multiple Word programming command; one destination will be out of FLASH";
+ break;
+ case 0x0B:
+ s = "PLL Unlocked or Oscilator watchdog overflow occured during programming or erasing the FLASH";
+ break;
+ case 0x0C:
+ s = "Erase operation failed (phase 2)";
+ break;
+ case 0x0D:
+ s = "MCU serial buffer overrun, use lower serial speed";
+ break;
+ case 0xFF:
+ s = "Unknown or bad command";
+ break;
+ default:
+ s = "";
+ break;
+ }
+
+ return s;
+}
+
+const list<uint16_t>
+CMcuSt10f168::getConfigData(float mcuFrequency)
+{
+ list<uint16_t> ret;
+ ret.push_back(get2TclConst(mcuFrequency));
+ return ret;
+}
+
+uint16_t
+CMcuSt10f168::get2TclConst(float mcuFrequency)
+{
+ if (mcuFrequency > ST10F168_MAX_FREQ) {
+ ostringstream os;
+ os << "User-entered CPU frequency " << mcuFrequency << " MHz is outside range ";
+ os << "(0, " << ST10F168_MAX_FREQ << "]";
+ CLogger::error(os.str(), EXIT_MCU);
+ }
+ uint16_t t = ((uint16_t) (1000.0 / mcuFrequency)) + 1;
+ if (t > 200) {
+ ostringstream os;
+ os << "For user-entered CPU frequency " << mcuFrequency << "MHz";
+ os << " the period is " << t << " ns which is greater than maximal allowed ";
+ os << "period " << ST10F168_MAX_PERIOD << " ns. Setting period to ";
+ os << ST10F168_MAX_PERIOD << " ns";
+ CLogger::warning(os.str());
+ t = ST10F168_MAX_PERIOD;
+ } else if (t < 30) {
+ ostringstream os;
+ os << "For user-entered CPU frequency " << mcuFrequency << "MHz";
+ os << " the period is " << t << " ns which is lower than minmal allowed ";
+ os << "period " << ST10F168_MIN_PERIOD << " ns. Setting period to ";
+ os << ST10F168_MIN_PERIOD << " ns";
+ CLogger::warning(os.str());
+ t = ST10F168_MIN_PERIOD;
+ }
+ return t;
+}
diff --git a/McuSt10f168/McuSt10f168.hpp b/McuSt10f168/McuSt10f168.hpp
new file mode 100755
index 0000000..0f98620
--- /dev/null
+++ b/McuSt10f168/McuSt10f168.hpp
@@ -0,0 +1,27 @@
+#ifndef MCU_ST10F168_HPP
+#define MCU_ST10F168_HPP
+
+#include "McuSpecifics.hpp"
+
+class CMcuSt10f168 : public IMcuSpecifics {
+private:
+ list<uint32_t> mBlockSizes;
+
+ uint16_t get2TclConst(float mcuFrequency);
+public:
+ static bool hasThisId(uint16_t idmanuf, uint16_t idchip);
+
+ CMcuSt10f168();
+ ~CMcuSt10f168();
+
+ string getName();
+ uint8_t *getFirmware();
+ int getFirmwareLength();
+ const list<uint32_t> getBlockSizes();
+ uint32_t getFlashSize();
+ int getEraseTimeout();
+ string getMessageForRetCode(uint16_t ret);
+ const list<uint16_t> getConfigData(float mcuFrequency);
+};
+
+#endif
diff --git a/McuSt10f269/CMakeLists.txt b/McuSt10f269/CMakeLists.txt
new file mode 100755
index 0000000..b67a62f
--- /dev/null
+++ b/McuSt10f269/CMakeLists.txt
@@ -0,0 +1,26 @@
+# Path to firmware binary files for ST10F269
+set (FwSt10f269Prefix ${FwPrefix})
+set(FwSt10f269
+ ${FwSt10f269Prefix}/st10f269/Objects/st10f269.bin
+ )
+
+# Generate firmware header files
+include_directories (${CMAKE_CURRENT_BINARY_DIR})
+
+generate_headers_from_binaries (
+ "$<TARGET_FILE:xd>"
+ FwSt10f269
+ "${FwSt10f269}"
+ "${CMAKE_CURRENT_BINARY_DIR}"
+)
+
+add_library (McuSt10f269 STATIC
+ McuSt10f269.cpp
+ ${CMAKE_CURRENT_BINARY_DIR}/fw_st10f269.hpp
+)
+
+set_target_properties (McuSt10f269 PROPERTIES
+ CXX_STANDARD 11
+ CXX_STANDARD_REQUIRED ON
+ CXX_EXTENSIONS OFF
+)
diff --git a/McuSt10f269/McuSt10f269.cpp b/McuSt10f269/McuSt10f269.cpp
new file mode 100755
index 0000000..99c578d
--- /dev/null
+++ b/McuSt10f269/McuSt10f269.cpp
@@ -0,0 +1,102 @@
+#include "Logger.hpp"
+#include "McuSt10f269.hpp"
+#include "fw_st10f269.hpp"
+
+using FwSt10f269::fw_st10f269;
+using FwSt10f269::fw_st10f269_length;
+
+#define ST10F269_FLASH_SIZE (256 * 1024)
+#define ST10F269_IDMANUF 0x0401
+#define ST10F269_IDCHIP 0x10D0
+#define ST10F269_ERASE_TIMEOUT 15000 // Ms
+
+#define RET_ERASE_ERROR 0x030
+#define RET_WRITE_ERROR 0x031
+
+bool
+CMcuSt10f269::hasThisId(uint16_t idmanuf, uint16_t idchip)
+{
+ // Mask out revision bits 3 - 0 from idchip value
+ return ((idmanuf == ST10F269_IDMANUF)
+ && ((idchip & 0xfff0) == ST10F269_IDCHIP));
+}
+
+CMcuSt10f269::CMcuSt10f269()
+{
+ mBlockSizes.push_back(16);
+ mBlockSizes.push_back(8);
+ mBlockSizes.push_back(8);
+ mBlockSizes.push_back(32);
+ mBlockSizes.push_back(64);
+ mBlockSizes.push_back(64);
+ mBlockSizes.push_back(64);
+}
+
+CMcuSt10f269::~CMcuSt10f269()
+{
+ ;
+}
+
+string
+CMcuSt10f269::getName()
+{
+ return string("ST10F269");
+}
+
+uint8_t *
+CMcuSt10f269::getFirmware()
+{
+ return fw_st10f269;
+}
+
+int
+CMcuSt10f269::getFirmwareLength()
+{
+ return fw_st10f269_length;
+}
+
+const list<uint32_t>
+CMcuSt10f269::getBlockSizes()
+{
+ return mBlockSizes;
+}
+
+uint32_t
+CMcuSt10f269::getFlashSize()
+{
+ return ST10F269_FLASH_SIZE;
+}
+
+int
+CMcuSt10f269::getEraseTimeout()
+{
+ return ST10F269_ERASE_TIMEOUT;
+}
+
+string
+CMcuSt10f269::getMessageForRetCode(uint16_t ret)
+{
+ string s;
+
+ switch (ret) {
+ case RET_ERASE_ERROR:
+ s = "Error while erasing memory";
+ break;
+ case RET_WRITE_ERROR:
+ s = "Error while writing memory";
+ break;
+ default:
+ s = "";
+ break;
+ }
+
+ return s;
+}
+
+const list<uint16_t>
+CMcuSt10f269::getConfigData(float mcuFrequency)
+{
+ list<uint16_t> ret;
+ ret.push_back(0x00); // Any byte value
+ return ret;
+}
diff --git a/McuSt10f269/McuSt10f269.hpp b/McuSt10f269/McuSt10f269.hpp
new file mode 100755
index 0000000..01063d6
--- /dev/null
+++ b/McuSt10f269/McuSt10f269.hpp
@@ -0,0 +1,25 @@
+#ifndef MCU_ST10F269_HPP
+#define MCU_ST10F269_HPP
+
+#include "McuSpecifics.hpp"
+
+class CMcuSt10f269 : public IMcuSpecifics {
+private:
+ list<uint32_t> mBlockSizes;
+public:
+ static bool hasThisId(uint16_t idmanuf, uint16_t idchip);
+
+ CMcuSt10f269();
+ ~CMcuSt10f269();
+
+ string getName();
+ uint8_t *getFirmware();
+ int getFirmwareLength();
+ const list<uint32_t> getBlockSizes();
+ uint32_t getFlashSize();
+ int getEraseTimeout();
+ string getMessageForRetCode(uint16_t ret);
+ const list<uint16_t> getConfigData(float mcuFrequency);
+};
+
+#endif
diff --git a/SerialPort/CMakeLists.txt b/SerialPort/CMakeLists.txt
new file mode 100755
index 0000000..dc7aa6b
--- /dev/null
+++ b/SerialPort/CMakeLists.txt
@@ -0,0 +1,19 @@
+if (WIN32)
+ add_library (SerialPort STATIC
+ SerialPortFactory.cpp
+ SerialPort.cpp
+ SerialPortWin32.cpp
+ )
+else()
+ add_library (SerialPort STATIC
+ SerialPortFactory.cpp
+ SerialPort.cpp
+ SerialPortUnix.cpp
+ )
+endif()
+
+set_target_properties (SerialPort PROPERTIES
+ CXX_STANDARD 11
+ CXX_STANDARD_REQUIRED ON
+ CXX_EXTENSIONS OFF
+)
diff --git a/SerialPort/SerialPort.cpp b/SerialPort/SerialPort.cpp
new file mode 100755
index 0000000..93e9d20
--- /dev/null
+++ b/SerialPort/SerialPort.cpp
@@ -0,0 +1,157 @@
+#include "SerialPort.hpp"
+#include "Logger.hpp"
+#include "ExitException.hpp"
+#include "ExitCodes.hpp"
+#include <cstring>
+#include <sstream>
+
+using std::ostringstream;
+
+#define READ_DEFAULT_TIMEOUT 3000 // ms
+
+void
+CSerialPort::writeWord(uint16_t w)
+{
+ uint8_t b;
+
+ b = (w & 0xff);
+ this->write(&b, 1, 1);
+
+ b = (w & 0xff00) >> 8;
+ this->write(&b, 1, 1);
+}
+
+uint16_t
+CSerialPort::readWord()
+{
+ uint8_t b;
+ uint16_t w;
+
+ w = 0;
+
+ this->read(&b, 1);
+ w |= ((uint16_t) b);
+
+ this->read(&b, 1);
+ w |= ((uint16_t) b) << 8;
+
+ return w;
+}
+
+uint32_t
+CSerialPort::readDoubleWord()
+{
+ uint8_t b;
+ uint32_t dw;
+
+ dw = 0;
+
+ this->read(&b, 1);
+ dw |= ((uint32_t) b);
+
+ this->read(&b, 1);
+ dw |= ((uint32_t) b) << 8;
+
+ this->read(&b, 1);
+ dw |= ((uint32_t) b) << 16;
+
+ this->read(&b, 1);
+ dw |= ((uint32_t) b) << 24;
+
+ return dw;
+}
+
+void
+CSerialPort::setReadTimeout(int timetout)
+{
+ mReadTimeoutMs = timetout;
+}
+
+void
+CSerialPort::setDefaultTimeout()
+{
+ mReadTimeoutMs = READ_DEFAULT_TIMEOUT;
+}
+
+void
+CSerialPort::write(uint8_t *data, int data_length, int padd_to)
+{
+ // Write data
+ for (int i = 0; i < data_length; )
+ i += writeSingle(data, data_length);
+ // Write pad
+ // TODO: odkial brat hodnotu pad byte??
+ uint8_t p[512];
+ memset(p, 0xFF, 512);
+
+ for (padd_to -= data_length; padd_to > 0; ) {
+ int w = 512;
+ if (padd_to < 512)
+ w = padd_to;
+ padd_to -= writeSingle(p, w);
+ }
+}
+
+void
+CSerialPort::read(uint8_t *data, int data_length)
+{
+ for (int i = 0; i < data_length; ) {
+ int old_i = i;
+ i += readSingle(data + i, data_length - i);
+ // TODO: pre Win32, pretoze tam nedetekujeme timeout a moze vracat 0 bajtov precitanych
+ if (i == old_i) {
+ CLogger::error("Timeout occured while reading data from serial port", EXIT_SERIAL_PORT);
+ }
+ }
+}
+
+void
+CSerialPort::sendSafeByte(uint8_t b)
+{
+ uint8_t r;
+
+ this->write(&b, 1, 1);
+ this->read(&r, 1);
+ if (r != b) {
+ ostringstream os;
+ os << "Bad echo when sending byte safely, expected " << CLogger::decToHex(b);
+ os << " received " << CLogger::decToHex(r);
+ CLogger::error(os.str(), EXIT_SERIAL_PORT);
+ }
+ this->write(&b, 1, 1);
+ this->read(&r, 1);
+ if (r != 0x00) {
+ ostringstream os;
+ os << "Cannot send byte safely, expected 0x00 received " << CLogger::decToHex(r);
+ CLogger::error(os.str(), EXIT_SERIAL_PORT);
+ }
+}
+
+void
+CSerialPort::sendSafeWord(uint16_t w)
+{
+ this->writeWord(w);
+ uint16_t r = this->readWord();
+ if (r != w) {
+ ostringstream os;
+ os << "Bad echo when sending word safely, expected " << CLogger::decToHex(w);
+ os << " received " << CLogger::decToHex(r);
+ CLogger::error(os.str(), EXIT_SERIAL_PORT);
+ }
+ this->writeWord(w);
+ r = this->readWord();
+ if (r != 0x00) {
+ ostringstream os;
+ os << "Cannot send word safely, expected 0x0000 received " << CLogger::decToHex(r);
+ CLogger::error(os.str(), EXIT_SERIAL_PORT);
+ }
+}
+
+void
+CSerialPort::sendSafeDoubleWord(uint32_t w)
+{
+ // Send low word
+ sendSafeWord(w & 0x0000FFFF);
+ // Send high word
+ sendSafeWord((w & 0xFFFF0000) >> 16);
+}
diff --git a/SerialPort/SerialPort.hpp b/SerialPort/SerialPort.hpp
new file mode 100755
index 0000000..90bb87f
--- /dev/null
+++ b/SerialPort/SerialPort.hpp
@@ -0,0 +1,37 @@
+#ifndef SERIAL_PORT_H
+#define SERIAL_PORT_H 1
+
+#include <iostream>
+#include <cstdint>
+
+using std::string;
+
+class CSerialPort {
+protected:
+ int mReadTimeoutMs; // Miliseconds
+
+ virtual ssize_t readSingle(uint8_t *data, int data_length) = 0;
+ virtual ssize_t writeSingle(uint8_t *data, int data_length) = 0;
+public:
+ virtual ~CSerialPort() { ; };
+
+ virtual void open(string portName, string speed) = 0;
+ virtual string getSpeeds(string portName) = 0;
+
+ virtual void close() = 0;
+
+ void setReadTimeout(int ms);
+ void setDefaultTimeout();
+
+ void writeWord(uint16_t w);
+ uint16_t readWord();
+ uint32_t readDoubleWord();
+ void read(uint8_t *data, int data_length);
+ void write(uint8_t *data, int data_length, int padd);
+ void sendSafeByte(uint8_t b);
+ void sendSafeWord(uint16_t w);
+ void sendSafeDoubleWord(uint32_t w);
+
+};
+
+#endif
diff --git a/SerialPort/SerialPortFactory.cpp b/SerialPort/SerialPortFactory.cpp
new file mode 100755
index 0000000..a7e8e9f
--- /dev/null
+++ b/SerialPort/SerialPortFactory.cpp
@@ -0,0 +1,21 @@
+#include "SerialPortFactory.hpp"
+
+#ifdef WIN32
+#include "SerialPortWin32.hpp"
+#else
+#include "SerialPortUnix.hpp"
+#endif
+
+std::unique_ptr<CSerialPort>
+CSerialPortFactory::getSerialPort()
+{
+ std::unique_ptr<CSerialPort> sp;
+
+#ifdef WIN32
+ sp.reset(new CSerialPortWin32());
+#else
+ sp.reset(new CSerialPortUnix());
+#endif
+
+ return sp;
+}
diff --git a/SerialPort/SerialPortFactory.hpp b/SerialPort/SerialPortFactory.hpp
new file mode 100755
index 0000000..7cecc8c
--- /dev/null
+++ b/SerialPort/SerialPortFactory.hpp
@@ -0,0 +1,13 @@
+#ifndef SERIAL_PORT_FACTORY_HPP
+#define SERIAL_PORT_FACTORY_HPP 1
+
+#include <memory>
+
+#include "SerialPort.hpp"
+
+class CSerialPortFactory {
+public:
+ std::unique_ptr<CSerialPort> getSerialPort();
+};
+
+#endif
diff --git a/SerialPort/SerialPortUnix.cpp b/SerialPort/SerialPortUnix.cpp
new file mode 100755
index 0000000..20fba2e
--- /dev/null
+++ b/SerialPort/SerialPortUnix.cpp
@@ -0,0 +1,285 @@
+#include <stdio.h>
+#include <string.h> /* String function definitions */
+#include <unistd.h> /* UNIX standard function definitions */
+#include <fcntl.h> /* File control definitions */
+#include <errno.h> /* Error number definitions */
+#include <termios.h>
+#include <sys/select.h>
+#include <errno.h>
+
+#include <sstream>
+#include <iostream>
+#include <iomanip>
+
+using std::ostringstream;
+using std::endl;
+using std::setw;
+using std::right;
+
+#include "ExitCodes.hpp"
+#include "SerialPortUnix.hpp"
+#include "Logger.hpp"
+#include "ExitException.hpp"
+
+#define DEFAULT_SERIAL_SPEED "19200"
+
+CSerialPortUnix::CSerialPortUnix()
+{
+ mSerialPortFd = -1;
+ mPortName = "";
+ // Construct vector of available system baudrates
+#ifdef B50
+ mBaudrates.push_back(pair<string, speed_t>("50", B50));
+#endif
+#ifdef B75
+ mBaudrates.push_back(pair<string, speed_t>("75", B75));
+#endif
+#ifdef B110
+ mBaudrates.push_back(pair<string, speed_t>("110", B110));
+#endif
+#ifdef B134
+ mBaudrates.push_back(pair<string, speed_t>("134", B134));
+#endif
+#ifdef B150
+ mBaudrates.push_back(pair<string, speed_t>("150", B150));
+#endif
+#ifdef B200
+ mBaudrates.push_back(pair<string, speed_t>("200", B200));
+#endif
+#ifdef B300
+ mBaudrates.push_back(pair<string, speed_t>("300", B300));
+#endif
+#ifdef B600
+ mBaudrates.push_back(pair<string, speed_t>("600", B600));
+#endif
+#ifdef B1200
+ mBaudrates.push_back(pair<string, speed_t>("1200", B1200));
+#endif
+#ifdef B1800
+ mBaudrates.push_back(pair<string, speed_t>("1800", B1800));
+#endif
+#ifdef B2400
+ mBaudrates.push_back(pair<string, speed_t>("2400", B2400));
+#endif
+#ifdef B4800
+ mBaudrates.push_back(pair<string, speed_t>("4800", B4800));
+#endif
+#ifdef B9600
+ mBaudrates.push_back(pair<string, speed_t>("9600", B9600));
+#endif
+#ifdef B19200
+ mBaudrates.push_back(pair<string, speed_t>("19200", B19200));
+#endif
+#ifdef B38400
+ mBaudrates.push_back(pair<string, speed_t>("38400", B38400));
+#endif
+#ifdef B57600
+ mBaudrates.push_back(pair<string, speed_t>("57600", B57600));
+#endif
+#ifdef B115200
+ mBaudrates.push_back(pair<string, speed_t>("115200", B115200));
+#endif
+#ifdef B230400
+ mBaudrates.push_back(pair<string, speed_t>("230400", B230400));
+#endif
+}
+
+CSerialPortUnix::~CSerialPortUnix()
+{
+ ;
+}
+
+void
+CSerialPortUnix::openPort(string portName)
+{
+ if (mSerialPortFd == -1) {
+ mSerialPortFd = ::open(portName.c_str(), O_RDWR | O_NOCTTY | O_NDELAY);
+ if (mSerialPortFd == -1)
+ CLogger::error("Cannot open serial port " + portName, EXIT_SERIAL_PORT);
+ mPortName = portName;
+ }
+}
+
+void
+CSerialPortUnix::open(string portName, string speed)
+{
+ this->setDefaultTimeout();
+
+ openPort(portName);
+ // Set parameters of serial communication
+ pair<string, speed_t> s = findSpeed(speed, getDeviceSpeeds());
+ setSpeed(s);
+
+ struct termios options;
+
+ tcgetattr(mSerialPortFd, &options);
+ // Control options
+ options.c_cflag |= (CLOCAL | CREAD);
+ options.c_cflag &= ~PARENB;
+ options.c_cflag &= ~CSTOPB;
+ options.c_cflag &= ~CSIZE;
+ options.c_cflag |= CS8;
+ // Turn off hardware flow controll
+ options.c_cflag &= ~CRTSCTS;
+ // Input Options - Turn off software flow controll, and CR <-> LF mapping
+ options.c_iflag &= ~(IXON | IXOFF | IXANY | INLCR | ICRNL);
+ // Line options - Raw input
+ options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
+ // Raw output
+ options.c_oflag &= ~OPOST;
+ tcsetattr(mSerialPortFd, TCSANOW, &options);
+ // Blocking read
+ fcntl(mSerialPortFd, F_SETFL, 0);
+
+ CLogger::info("Serial port " + mPortName + " opened at speed " + s.first + " Bd");
+}
+
+void
+CSerialPortUnix::close()
+{
+ // Close only valid descriptor
+ if (mSerialPortFd != -1) {
+ if (::close(mSerialPortFd) == -1)
+ CLogger::error("Cannot close serial port", EXIT_SERIAL_PORT);
+ mSerialPortFd = -1;
+ mPortName = "";
+ }
+}
+
+vector<pair<string, speed_t>>
+CSerialPortUnix::getDeviceSpeeds()
+{
+ vector<pair<string, speed_t>> ds;
+ vector<pair<string, speed_t>>::const_iterator it;
+
+ // Test which baudrates are supported by underlying device
+ for (it = mBaudrates.begin(); it != mBaudrates.end(); ++it) {
+ // Try to set the baudrate
+ struct termios options;
+
+ if (tcgetattr(mSerialPortFd, &options) != 0)
+ CLogger::error("Cannot get attributes of serial port " + mPortName, EXIT_SERIAL_PORT);
+
+ if (!cfsetispeed(&options, it->second)
+ && !cfsetospeed(&options, it->second)
+ && !tcsetattr(mSerialPortFd, TCSANOW, &options)) {
+ ds.push_back(*it);
+ }
+ }
+
+ return ds;
+}
+
+string
+CSerialPortUnix::getSpeeds(string portName)
+{
+ ostringstream os;
+ int c;
+ vector<pair<string, speed_t>> s;
+ vector<pair<string, speed_t>>::const_iterator it;
+
+ openPort(portName);
+ s = getDeviceSpeeds();
+ for (c = 0, it = s.begin(); it != s.end(); ++c, ++it)
+ os << setw(7) << right << it->first << " Bd" << endl;
+ // Close serial port
+ close();
+
+ if (c == 0)
+ CLogger::error("Serial port device does not support any baudrates", EXIT_SERIAL_PORT);
+
+ return os.str();
+}
+
+pair<string, speed_t>
+CSerialPortUnix::findSpeed(string speed, const vector<pair<string, speed_t>> & list)
+{
+ vector<pair<string, speed_t>>::const_iterator it;
+ vector<pair<string, speed_t>>::const_iterator defit;
+ bool foundDef = false;
+
+ for (it = list.begin(); it != list.end(); ++it) {
+ if (!(it->first).compare(speed))
+ return *it; // Exact match
+ else if (!(it->first).compare(DEFAULT_SERIAL_SPEED)) {
+ defit = it; // We have found default serial speed
+ foundDef = true;
+ }
+ }
+
+ if (foundDef)
+ // We have not found exact speed and default speed. Choose
+ // highest supported.
+ return *defit;
+
+ return *(it - 1);
+}
+
+void
+CSerialPortUnix::setSpeed(pair<string, speed_t> speed)
+{
+ struct termios options;
+
+ if (tcgetattr(mSerialPortFd, &options)
+ || cfsetispeed(&options, speed.second)
+ || cfsetospeed(&options, speed.second)
+ || tcsetattr(mSerialPortFd, TCSANOW, &options)) {
+ CLogger::error("Cannot set serial speed: " + speed.first + ": " + strerror(errno), EXIT_SERIAL_PORT);
+ }
+}
+
+
+ssize_t
+CSerialPortUnix::writeSingle(uint8_t *data, int data_length)
+{
+ ssize_t r = ::write(mSerialPortFd, data, data_length);
+
+ if (r <= 0) {
+ ostringstream os;
+ os << "Cannot write to serial port";
+ if (r < 0)
+ os << ": " << string(strerror(errno));
+ CLogger::error(os.str(), EXIT_SERIAL_PORT);
+ }
+
+ return r;
+}
+
+ssize_t
+CSerialPortUnix::readSingle(uint8_t *data, int data_length)
+{
+ ssize_t r = 0;
+ int s;
+ fd_set read_fds, write_fds, except_fds;
+ struct timeval timeout;
+
+ // Renew file descriptor sets
+ FD_ZERO(&read_fds);
+ FD_ZERO(&write_fds);
+ FD_ZERO(&except_fds);
+ FD_SET(mSerialPortFd, &read_fds);
+ // Set timeout
+ timeout.tv_sec = mReadTimeoutMs / 1000;
+ timeout.tv_usec = 0;
+ // Wait for event
+ s = select(mSerialPortFd + 1, &read_fds, &write_fds, &except_fds, &timeout);
+ if (s == 1) {
+ // One descriptor changed, ready to read
+ r = ::read(mSerialPortFd, data, data_length);
+ } else if (s == 0) {
+ // Timeout occured
+ CLogger::error("Timeout occured while reading data from serial port", EXIT_SERIAL_PORT);
+ }
+
+ if ((s < 0) || (r <= 0)) {
+ // Error occured in select or read
+ ostringstream os;
+ os << "Cannot read from serial port";
+ if (r < 0) {
+ os << ": " << strerror(errno);
+ CLogger::error(os.str(), EXIT_SERIAL_PORT);
+ }
+ }
+
+ return r;
+}
diff --git a/SerialPort/SerialPortUnix.hpp b/SerialPort/SerialPortUnix.hpp
new file mode 100755
index 0000000..db1ae73
--- /dev/null
+++ b/SerialPort/SerialPortUnix.hpp
@@ -0,0 +1,35 @@
+#ifndef SERIAL_PORT_UNIX_H
+#define SERIAL_PORT_UNIX_H 1
+
+#include <termios.h>
+
+#include <vector>
+#include "SerialPort.hpp"
+
+using std::vector;
+using std::pair;
+
+class CSerialPortUnix : public CSerialPort {
+private:
+ int mSerialPortFd;
+ string mPortName;
+ vector< pair<string, speed_t> > mBaudrates;
+
+ vector<pair<string, speed_t>> getDeviceSpeeds();
+ pair<string, speed_t> findSpeed(string speed, const vector<pair<string, speed_t>> & list);
+ void setSpeed(pair<string, speed_t> speed);
+ void openPort(string portName);
+
+ ssize_t readSingle(uint8_t *data, int data_length);
+ ssize_t writeSingle(uint8_t *data, int data_length);
+public:
+ CSerialPortUnix();
+ ~CSerialPortUnix();
+
+ void open(string portName, string speed);
+ string getSpeeds(string portName);
+
+ void close();
+};
+
+#endif
diff --git a/SerialPort/SerialPortWin32.cpp b/SerialPort/SerialPortWin32.cpp
new file mode 100755
index 0000000..15316d2
--- /dev/null
+++ b/SerialPort/SerialPortWin32.cpp
@@ -0,0 +1,238 @@
+#include <sstream>
+#include <cstdio>
+
+#include "ExitCodes.hpp"
+#include "SerialPortWin32.hpp"
+#include "Logger.hpp"
+
+using std::ostringstream;
+using std::istringstream;
+
+//Returns the last Win32 error, in string format. Returns an empty string if there is no error.
+string
+CSerialPortWin32::getLastErrorAsString()
+{
+ DWORD e = GetLastError();
+ if (e == 0)
+ return string();
+
+ LPSTR msgBuff = nullptr;
+ size_t size = FormatMessageA(
+ FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ e,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (LPSTR) &msgBuff,
+ 0,
+ NULL);
+
+ string m(msgBuff, size);
+
+ LocalFree(msgBuff);
+
+ return m;
+}
+
+
+
+
+CSerialPortWin32::CSerialPortWin32()
+{
+ mSerialPortH = INVALID_HANDLE_VALUE;
+
+ mMaxBaudrates.push_back(s_speed("User defined", BAUD_USER, 0));
+ mMaxBaudrates.push_back(s_speed("75", BAUD_075, 75));
+ mMaxBaudrates.push_back(s_speed("110", BAUD_110, 110));
+ mMaxBaudrates.push_back(s_speed("134.5", BAUD_134_5, 134));
+ mMaxBaudrates.push_back(s_speed("150", BAUD_150, 150));
+ mMaxBaudrates.push_back(s_speed("300", BAUD_300, 300));
+ mMaxBaudrates.push_back(s_speed("600", BAUD_600, 600));
+ mMaxBaudrates.push_back(s_speed("1200", BAUD_1200, 1200));
+ mMaxBaudrates.push_back(s_speed("1800", BAUD_1800, 1800));
+ mMaxBaudrates.push_back(s_speed("2400", BAUD_2400, 2400));
+ mMaxBaudrates.push_back(s_speed("4800", BAUD_4800, 4800));
+ mMaxBaudrates.push_back(s_speed("7200", BAUD_7200, 7200));
+ mMaxBaudrates.push_back(s_speed("9600", BAUD_9600, 9600));
+ mMaxBaudrates.push_back(s_speed("14400", BAUD_14400, 14400));
+ mMaxBaudrates.push_back(s_speed("19200", BAUD_19200, 19200));
+ mMaxBaudrates.push_back(s_speed("38400", BAUD_38400, 38400));
+ mMaxBaudrates.push_back(s_speed("56000", BAUD_56K, 56000));
+ mMaxBaudrates.push_back(s_speed("57600", BAUD_57600, 576000));
+ mMaxBaudrates.push_back(s_speed("115200", BAUD_115200, 115200));
+ mMaxBaudrates.push_back(s_speed("128000", BAUD_128K, 128000));
+}
+
+CSerialPortWin32::~CSerialPortWin32()
+{
+ ;
+}
+
+void
+CSerialPortWin32::openPort(string portName)
+{
+ if (mSerialPortH == INVALID_HANDLE_VALUE) {
+ // Construct Windows serial port name
+ ostringstream sn;
+ sn << "\\\\.\\" << portName;
+ // Open serial port
+ mSerialPortH = CreateFile(sn.str().c_str(), // Port name
+ GENERIC_READ | GENERIC_WRITE, // Read/Write
+ 0, // No Sharing
+ NULL, // No Security
+ OPEN_EXISTING,// Open existing port only
+ 0, // Non Overlapped I/O
+ NULL); // Null for Comm Devices
+
+ if (mSerialPortH == INVALID_HANDLE_VALUE) {
+ CLogger::error("Cannot open port " + portName + ": " + getLastErrorAsString(),
+ EXIT_SERIAL_PORT);
+ }
+ }
+}
+
+void
+CSerialPortWin32::open(string portName, string speed)
+{
+ this->setDefaultTimeout();
+
+ openPort(portName);
+
+ DWORD ms = getMaxSpeed(portName).value;
+
+ // Konfiguracia
+ DCB dcbSerialParams = { 0 };
+ dcbSerialParams.DCBlength = sizeof(dcbSerialParams);
+
+ if (GetCommState(mSerialPortH, &dcbSerialParams) == 0) {
+ CLogger::error("Cannot get state for port " + portName + ": " + getLastErrorAsString(),
+ EXIT_SERIAL_PORT);
+ }
+ // Set speed
+ istringstream is(speed);
+ DWORD n;
+ is >> n;
+ if (n == 0) {
+ // User has requested default baudrate
+ n = ((ms == 0) || (19200 <= ms)) ? 19200 : ms;
+ } else if ((ms != 0) && (n > ms)) {
+ ostringstream os;
+ os << "Baudrate " << n << " Bd is higher than max. baudrate " << ms << " Bd supported by " << portName;
+ CLogger::error(os.str(), EXIT_SERIAL_PORT);
+ }
+
+ dcbSerialParams.BaudRate = n;
+ dcbSerialParams.ByteSize = 8; // Setting ByteSize = 8
+ dcbSerialParams.StopBits = ONESTOPBIT;// Setting StopBits = 1
+ dcbSerialParams.Parity = NOPARITY; // Setting Parity = None
+
+ if (SetCommState(mSerialPortH, &dcbSerialParams) == 0) {
+ CLogger::error("Cannot set state for port " + portName + ": " + getLastErrorAsString(),
+ EXIT_SERIAL_PORT);
+ }
+
+ ostringstream os;
+ os << n;
+ CLogger::info("Serial port " + portName + " opened at speed " + os.str() + " Bd");
+}
+
+CSerialPortWin32::s_speed
+CSerialPortWin32::getMaxSpeed(string portName)
+{
+ COMMPROP cp;
+
+ if (GetCommProperties(mSerialPortH, &cp) == 0) {
+ CLogger::error("Cannot get properties of " + portName + " port: " + getLastErrorAsString(),
+ EXIT_SERIAL_PORT);
+ }
+
+ // Convert key to baudrate value
+ list<s_speed>::const_iterator it;
+
+ for (it = mMaxBaudrates.begin(); it != mMaxBaudrates.end(); ++it) {
+ if (it->key == cp.dwMaxBaud)
+ break;
+ }
+
+ return *it;
+}
+
+string
+CSerialPortWin32::getSpeeds(string portName)
+{
+ openPort(portName);
+
+ s_speed m = getMaxSpeed(portName);
+
+ ostringstream os;
+ os << "User defined baudrate";
+ if (m.key != BAUD_USER)
+ os << " up to the " << m.name << " Bd";
+
+ close();
+ return os.str();
+}
+
+void
+CSerialPortWin32::close()
+{
+ if (mSerialPortH != INVALID_HANDLE_VALUE) {
+ if (CloseHandle(mSerialPortH) == 0) {
+ CLogger::error("Cannot close serial port: " + getLastErrorAsString(),
+ EXIT_SERIAL_PORT);
+ }
+ mSerialPortH = INVALID_HANDLE_VALUE;
+ }
+}
+
+void
+CSerialPortWin32::setTimeouts(int ms)
+{
+ COMMTIMEOUTS timeouts;
+
+ if (!GetCommTimeouts(mSerialPortH, &timeouts)) {
+ CLogger::error("Cannot get timeouts for serial port: " + getLastErrorAsString(),
+ EXIT_SERIAL_PORT);
+ }
+
+ timeouts.ReadIntervalTimeout = ms;
+ timeouts.ReadTotalTimeoutMultiplier = ms;
+ timeouts.ReadTotalTimeoutConstant = 0;
+
+ timeouts.WriteTotalTimeoutMultiplier = ms;
+ timeouts.WriteTotalTimeoutConstant = 0;
+
+ if (!SetCommTimeouts(mSerialPortH, &timeouts)) {
+ CLogger::error("Cannot set timeouts for port: " + getLastErrorAsString(),
+ EXIT_SERIAL_PORT);
+ }
+}
+
+ssize_t
+CSerialPortWin32::writeSingle(uint8_t *data, int data_length)
+{
+ DWORD written = 0;
+
+ setTimeouts(mReadTimeoutMs);
+ // TODO: Rozlisovat medzi timeoutom a chybou
+ if (!WriteFile(mSerialPortH, data, data_length, &written, NULL)) {
+ CLogger::error("Cannot write data to the serial port: " + getLastErrorAsString(),
+ EXIT_SERIAL_PORT);
+ }
+
+ return written;
+}
+
+ssize_t
+CSerialPortWin32::readSingle(uint8_t *data, int data_length)
+{
+ DWORD read;
+
+ setTimeouts(mReadTimeoutMs);
+
+ if (!ReadFile(mSerialPortH, data, data_length, &read, NULL)) {
+ CLogger::error("Cannot read data from serial port: " + getLastErrorAsString(),
+ EXIT_SERIAL_PORT);
+ }
+
+ return read;
+}
diff --git a/SerialPort/SerialPortWin32.hpp b/SerialPort/SerialPortWin32.hpp
new file mode 100755
index 0000000..2cba0f7
--- /dev/null
+++ b/SerialPort/SerialPortWin32.hpp
@@ -0,0 +1,49 @@
+#ifndef SERIAL_PORT_WIN32_H
+#define SERIAL_PORT_WIN32_H 1
+
+#include <windows.h>
+#include <list>
+#include "SerialPort.hpp"
+
+using std::pair;
+using std::list;
+
+class CSerialPortWin32 : public CSerialPort {
+private:
+ HANDLE mSerialPortH;
+
+ struct s_speed {
+ string name;
+ DWORD key;
+ DWORD value;
+
+ s_speed(string n, DWORD k, DWORD v) {
+ name = n;
+ key = k;
+ value = v;
+ }
+ };
+
+ list<struct s_speed> mMaxBaudrates;
+
+
+ void openPort(string portName);
+ s_speed getMaxSpeed(string portName);
+ void setTimeouts(int ms);
+ string getLastErrorAsString();
+
+ ssize_t readSingle(uint8_t *data, int data_length);
+ ssize_t writeSingle(uint8_t *data, int data_length);
+public:
+ CSerialPortWin32();
+ ~CSerialPortWin32();
+
+ void open(string portName, string speed);
+ string getSpeeds(string portName);
+
+ void close();
+ void write(uint8_t *data, int data_length, int padd_to);
+ void read(uint8_t *data, int data_length);
+};
+
+#endif
diff --git a/UserConfig.cpp b/UserConfig.cpp
new file mode 100755
index 0000000..dbfa88e
--- /dev/null
+++ b/UserConfig.cpp
@@ -0,0 +1,375 @@
+#include <sstream>
+#include <memory>
+#include "ExitCodes.hpp"
+#include "UserConfig.hpp"
+#include "Logger.hpp"
+#include "help_message.hpp"
+
+using std::ostringstream;
+using std::istringstream;
+using std::endl;
+using std::noskipws;
+
+
+#define OPERATION_SPEEDS "speeds"
+#define OPERATION_ERASE "erase"
+#define OPERATION_READ "read"
+#define OPERATION_WRITE "write"
+#define OPERATION_HELP "help"
+#define OPERATION_VERSION "version"
+#define OPERATION_IDENT "ident"
+
+
+// Common options
+#define OPTION_SERIAL_PORT "-p"
+#define OPTION_VERBOSE_MODE "-v"
+#define OPTION_SERIAL_SPEED "-s"
+#define OPTION_FREQUENCY "-f"
+#define OPTION_PRINT_PROGRESS "-g"
+// Options specific for an operation
+#define OPTION_B "-b"
+#define OPTION_C "-c"
+#define OPTION_E "-e"
+#define OPTION_N "-n"
+
+
+CUserConfig::CUserConfig(int argc, char **argv)
+{
+ mSerialPortName = DEFAULT_SERIAL_PORT_NAME;
+ mSerialSpeed = "0"; // Default serial speed for given device
+ mVerboseMode = false;
+ mSpeeds = false;
+ mHelp = false;
+ mVersion = false;
+ mIdent = false;
+ mErase = false;
+ mRead = false;
+ mReadOutputFilename = "";
+ mReadLength = -1;
+ mWrite = false;
+ mWriteInputFilename = "";
+ mWriteEraseWholeMemory = false;
+ mWriteCheckByRead = false;
+ mMcuFrequency = 0;
+ mPrintProgress = false;
+
+ vector<char *> args;
+
+ for (int i = 1; i < argc; ++i)
+ args.push_back(argv[i]);
+
+ parseCommandLine(args);
+}
+
+const string
+CUserConfig::getHelpMessage(const string & execName) const
+{
+ return HelpMessage::getText(execName);
+}
+
+void
+CUserConfig::parseCommandLine(vector<char *> & args)
+{
+ // Process options common for all operations. Create custom
+ // argument vector without processed common options.
+ vector<char *>::iterator it = args.begin();
+ // Skip operation name from processing
+ if (it != args.end())
+ ++it;
+ // Start at the second argument, first is the name of an
+ // operation.
+ while (it != args.end()) {
+ string a = *it;
+ bool processed = false;
+ bool with_argument = false;
+
+ if (!a.compare(OPTION_SERIAL_PORT)) {
+ mSerialPortName = getArgument(it, args.end());
+ processed = true;
+ with_argument = true;
+ } else if (!a.compare(OPTION_SERIAL_SPEED)) {
+ mSerialSpeed = getArgument(it, args.end());
+ processed = true;
+ with_argument = true;
+ } else if (!a.compare(OPTION_VERBOSE_MODE)) {
+ mVerboseMode = true;
+ processed = true;
+ } else if (!a.compare(OPTION_PRINT_PROGRESS)) {
+ mPrintProgress = true;
+ processed = true;
+ } else if (!a.compare(OPTION_FREQUENCY)) {
+ istringstream is(getArgument(it, args.end()));
+ string s = is.str();
+ float f;
+ is >> noskipws >> f;
+ bool a = (is.fail() || (f <= 0));
+ bool b = (is.peek() != EOF);
+ if (a || b) {
+ ostringstream os;
+ os << "Argument for -f option '" << s << "' is not a positive real number";
+ CLogger::error(os.str(), EXIT_USER_CONFIG);
+ }
+ mMcuFrequency = f;
+ processed = true;
+ with_argument = true;
+ }
+
+ if (processed) {
+ it = args.erase(it);
+ if (with_argument) // Urcite bude platne, to mame osetrene getArgument()
+ it = args.erase(it);
+ } else {
+ ++it;
+ }
+ }
+
+ it = args.begin();
+ if (it != args.end()) {
+ it = args.begin();
+ // Resolve operation name
+ string a = *it;
+
+ if (!a.compare(OPERATION_SPEEDS)) {
+ mSpeeds = true;
+ } else if (!a.compare(OPERATION_ERASE)) {
+ mErase = true;
+ parseEraseArguments(++it, args.end());
+ } else if (!a.compare(OPERATION_READ)) {
+ mRead = true;
+ parseReadArguments(++it, args.end());
+ } else if (!a.compare(OPERATION_WRITE)) {
+ mWrite = true;
+ parseWriteArguments(++it, args.end());
+ } else if (!a.compare(OPERATION_HELP)) {
+ mHelp = true;
+ } else if (!a.compare(OPERATION_VERSION)) {
+ mVersion = true;
+ } else if (!a.compare(OPERATION_IDENT)) {
+ mIdent = true;
+ } else {
+ CLogger::error("Unknown operation requested: " + a, EXIT_USER_CONFIG);
+ }
+ }
+}
+
+void
+CUserConfig::parseEraseArguments(vector<char *>::const_iterator args,
+ vector<char *>::const_iterator end)
+{
+ while (args != end) {
+ string a = *args;
+ if (!a.compare(OPTION_B)) {
+ // Prepend comma for unified parsing
+ istringstream is("," + getArgument(args, end));
+ // Parse block numbers list
+ bool e = false;
+ for (;;) {
+ // Get comma
+ int c = is.get();
+ if (is.eof()) {
+ break;
+ } else if (c != ',') {
+ e = true;
+ break;
+ }
+ // Get number
+ int n;
+ is >> n;
+ if (is.fail()) {
+ e = true;
+ break;
+ }
+ mEraseBlockList.push_back(n);
+ }
+ if (e || mEraseBlockList.size() == 0)
+ CLogger::error("Argument for -b option must be in format N[,N]...", EXIT_USER_CONFIG);
+ ++args;
+ ++args;
+ } else {
+ string s = *args;
+ CLogger::error("Unknown argument '" + s + "' for erase operation", EXIT_USER_CONFIG);
+ }
+ }
+}
+
+void
+CUserConfig::parseReadArguments(vector<char *>::const_iterator args,
+ vector<char *>::const_iterator end)
+{
+ while (args != end) {
+ string a = *args;
+ if (!a.compare(OPTION_N)) {
+ istringstream n(getArgument(args, end));
+ string s = n.str();
+ n >> noskipws >> mReadLength;
+ bool a = (n.fail() || (mReadLength < 0));
+ bool b = (n.peek() != EOF);
+ if (a || b) {
+ ostringstream os;
+ os << "Argument for -n option '" << s << "' is not 0 or a positive number";
+ CLogger::error(os.str(), EXIT_USER_CONFIG);
+ }
+ ++args;
+ ++args;
+ } else {
+ // First occurence of this is the name of output file
+ if (mReadOutputFilename.length() == 0) {
+ mReadOutputFilename = a;
+ ++args;
+ } else {
+ string s = *args;
+ CLogger::error("Unknown argument '" + s + "' for read operation", EXIT_USER_CONFIG);
+ }
+ }
+ }
+ // Must have at least filename where to write output
+ if (mReadOutputFilename.length() == 0)
+ CLogger::error("Missing output filename for read operation", EXIT_USER_CONFIG);
+}
+
+void
+CUserConfig::parseWriteArguments(vector<char *>::const_iterator args,
+ vector<char *>::const_iterator end)
+{
+ while (args != end) {
+ string a = *args;
+ if (!a.compare(OPTION_E)) {
+ mWriteEraseWholeMemory = true;
+ ++args;
+ } else if (!a.compare(OPTION_C)) {
+ mWriteCheckByRead = true;
+ ++args;
+ } else {
+ // First occurence of this is the name of output file
+ if (mWriteInputFilename.length() == 0) {
+ mWriteInputFilename = a;
+ ++args;
+ } else {
+ string s = *args;
+ CLogger::error("Unknown argument '" + s + "' for write operation", EXIT_USER_CONFIG);
+ }
+ }
+ }
+ // Must have at least filename where to write output
+ if (mWriteInputFilename.length() == 0)
+ CLogger::error("Missing input filename for write operation", EXIT_USER_CONFIG);
+}
+
+string
+CUserConfig::getArgument(vector<char *>::const_iterator args,
+ vector<char *>::const_iterator end)
+{
+ if (++args == end) {
+ string s(*(--args));
+ CLogger::error("Missing argument for option '" + s + "'", EXIT_USER_CONFIG);
+ }
+ return string(*args);
+}
+
+bool
+CUserConfig::isEraseSet()
+{
+ return mErase;
+}
+
+list<unsigned int>
+CUserConfig::getEraseBlockList()
+{
+ return mEraseBlockList;
+}
+
+bool
+CUserConfig::isReadSet()
+{
+ return mRead;
+}
+
+bool
+CUserConfig::isWriteSet()
+{
+ return mWrite;
+}
+
+bool
+CUserConfig::isVerboseModeSet()
+{
+ return mVerboseMode;
+}
+
+bool
+CUserConfig::isPrintProgressSet()
+{
+ return mPrintProgress;
+}
+
+bool
+CUserConfig::isHelpSet()
+{
+ return mHelp;
+}
+
+bool
+CUserConfig::isVersionSet()
+{
+ return mVersion;
+}
+
+bool
+CUserConfig::isIdentSet()
+{
+ return mIdent;
+}
+
+string &
+CUserConfig::getSerialPortName()
+{
+ return mSerialPortName;
+}
+
+string &
+CUserConfig::getSerialSpeed()
+{
+ return mSerialSpeed;
+}
+
+string &
+CUserConfig::getReadOutputFname()
+{
+ return mReadOutputFilename;
+}
+
+string &
+CUserConfig::getWriteInputFname()
+{
+ return mWriteInputFilename;
+}
+
+int
+CUserConfig::getReadLength()
+{
+ return mReadLength;
+}
+
+bool
+CUserConfig::getWriteEraseWholeMemory()
+{
+ return mWriteEraseWholeMemory;
+}
+
+bool
+CUserConfig::getWriteCheckByRead()
+{
+ return mWriteCheckByRead;
+}
+
+bool
+CUserConfig::isSpeedsSet()
+{
+ return mSpeeds;
+}
+
+float
+CUserConfig::getMcuFrequency()
+{
+ return mMcuFrequency;
+}
diff --git a/UserConfig.hpp b/UserConfig.hpp
new file mode 100755
index 0000000..4d3d6b3
--- /dev/null
+++ b/UserConfig.hpp
@@ -0,0 +1,67 @@
+#ifndef USER_CONFIG_HPP
+#define USER_CONFIG_HPP 1
+
+#include <iostream>
+#include <list>
+#include <vector>
+
+using std::string;
+using std::list;
+using std::vector;
+
+class CUserConfig {
+private:
+ string mSerialPortName;
+ string mSerialSpeed;
+ bool mVerboseMode;
+ bool mHelp;
+ bool mVersion;
+ bool mIdent;
+ bool mSpeeds;
+ float mMcuFrequency;
+ bool mPrintProgress;
+ // Erase
+ bool mErase;
+ list<unsigned int> mEraseBlockList;
+ // Read
+ bool mRead;
+ string mReadOutputFilename;
+ int mReadLength;
+ // Write
+ bool mWrite;
+ bool mWriteEraseWholeMemory;
+ string mWriteInputFilename;
+ bool mWriteCheckByRead;
+
+ string getArgument(vector<char *>::const_iterator args, vector<char *>::const_iterator end);
+ void parseEraseArguments(vector<char *>::const_iterator args, vector<char *>::const_iterator end);
+ void parseReadArguments(vector<char *>::const_iterator args, vector<char *>::const_iterator end);
+ void parseWriteArguments(vector<char *>::const_iterator args, vector<char *>::const_iterator end);
+ void parseCommandLine(vector<char *> & args);
+
+public:
+ CUserConfig(int argc, char **argv);
+
+ const string getHelpMessage(const string & execName) const;
+
+ string & getSerialPortName();
+ string & getSerialSpeed();
+ bool isSpeedsSet();
+ bool isVerboseModeSet();
+ bool isPrintProgressSet();
+ bool isHelpSet();
+ bool isVersionSet();
+ bool isIdentSet();
+ bool isEraseSet();
+ list<unsigned int> getEraseBlockList();
+ bool isReadSet();
+ string & getReadOutputFname();
+ bool isWriteSet();
+ string & getWriteInputFname();
+ int getReadLength();
+ bool getWriteEraseWholeMemory();
+ bool getWriteCheckByRead();
+ float getMcuFrequency();
+};
+
+#endif
diff --git a/firmware/ident/Objects/ident.SBR b/firmware/ident/Objects/ident.SBR
new file mode 100755
index 0000000..301c7d7
--- /dev/null
+++ b/firmware/ident/Objects/ident.SBR
Binary files differ
diff --git a/firmware/ident/Objects/ident.bin b/firmware/ident/Objects/ident.bin
new file mode 100755
index 0000000..3abc090
--- /dev/null
+++ b/firmware/ident/Objects/ident.bin
Binary files differ
diff --git a/firmware/ident/ident.a66 b/firmware/ident/ident.a66
new file mode 100755
index 0000000..737d1fb
--- /dev/null
+++ b/firmware/ident/ident.a66
@@ -0,0 +1,27 @@
+$MOD167
+$SEGMENTED
+
+$INCLUDE (REG167.INC)
+$INCLUDE (COMMON.INC)
+
+NAME FIRMWARE_IDENTIFICATION
+ASSUME DPP3: SYSTEM
+
+FW_IDENT SECTION CODE AT FW2BASE
+MAIN PROC
+ ; Odosleme identifikaciu vyrobcu
+ CALL IDENTIFY
+ ; Vratime sa na firmware prvej urovne a tam pockame na nahratie
+ ; firmwaru pre vykonavanie operacii s FLASH
+ JMP FW1START
+MAIN ENDP
+
+$INCLUDE (SUBROUTINES.INC)
+
+FW_IDENT ENDS
+
+FW_S1 SECTION CODE AT FW1BASE
+FW1START:
+FW_S1 ENDS
+
+END \ No newline at end of file
diff --git a/firmware/ident/ident.uvgui.jan b/firmware/ident/ident.uvgui.jan
new file mode 100755
index 0000000..83e0e39
--- /dev/null
+++ b/firmware/ident/ident.uvgui.jan
@@ -0,0 +1,1360 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectGui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_gui.xsd">
+
+ <SchemaVersion>-5.1</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <ViewPool/>
+
+ <SECTreeCtrl>
+ <View>
+ <WinId>38003</WinId>
+ <ViewName>Registers</ViewName>
+ <TableColWidths>115 184</TableColWidths>
+ </View>
+ <View>
+ <WinId>346</WinId>
+ <ViewName>Code Coverage</ViewName>
+ <TableColWidths>442 160</TableColWidths>
+ </View>
+ <View>
+ <WinId>204</WinId>
+ <ViewName>Performance Analyzer</ViewName>
+ <TableColWidths>602</TableColWidths>
+ </View>
+ </SECTreeCtrl>
+
+ <TreeListPane>
+ <View>
+ <WinId>1506</WinId>
+ <ViewName>Symbols</ViewName>
+ <UserString></UserString>
+ <TableColWidths>133 133 133</TableColWidths>
+ </View>
+ <View>
+ <WinId>1936</WinId>
+ <ViewName>Watch 1</ViewName>
+ <UserString></UserString>
+ <TableColWidths>133 133 133</TableColWidths>
+ </View>
+ <View>
+ <WinId>1937</WinId>
+ <ViewName>Watch 2</ViewName>
+ <UserString></UserString>
+ <TableColWidths>133 133 133</TableColWidths>
+ </View>
+ <View>
+ <WinId>1935</WinId>
+ <ViewName>Call Stack + Locals</ViewName>
+ <UserString></UserString>
+ <TableColWidths>133 133 133</TableColWidths>
+ </View>
+ <View>
+ <WinId>2506</WinId>
+ <ViewName>Trace Data</ViewName>
+ <UserString></UserString>
+ <TableColWidths>75 135 130 95 70 230 200 150</TableColWidths>
+ </View>
+ </TreeListPane>
+
+ <WindowSettings>
+ <LogicAnalizer>
+ <ShowLACursor>1</ShowLACursor>
+ <ShowSignalInfo>1</ShowSignalInfo>
+ <ShowCycles>0</ShowCycles>
+ <LeftSideBarSize>0</LeftSideBarSize>
+ <TimeBaseIndex>-1</TimeBaseIndex>
+ </LogicAnalizer>
+ </WindowSettings>
+
+ <WinLayoutEx>
+ <sActiveDebugView></sActiveDebugView>
+ <WindowPosition>
+ <length>44</length>
+ <flags>0</flags>
+ <showCmd>3</showCmd>
+ <MinPosition>
+ <xPos>-1</xPos>
+ <yPos>-1</yPos>
+ </MinPosition>
+ <MaxPosition>
+ <xPos>-1684</xPos>
+ <yPos>-4</yPos>
+ </MaxPosition>
+ <NormalPosition>
+ <Top>89</Top>
+ <Left>-1243</Left>
+ <Right>-322</Right>
+ <Bottom>869</Bottom>
+ </NormalPosition>
+ </WindowPosition>
+ <MDIClientArea>
+ <RegID>0</RegID>
+ <MDITabState>
+ <Len>381</Len>
+ <Data>010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000001000000020000000000000001000000495A3A5C686F6D655C6A616E5C746D705C736B6F6C615C42505C746578745C5553425F464C4153485C7372635C696D706C5C6669726D776172655C6964656E745C6964656E742E61363600000000096964656E742E61363600000000BECEA100FFFFFFFF4F5A3A5C686F6D655C6A616E5C746D705C736B6F6C615C42505C746578745C5553425F464C4153485C7372635C696D706C5C6669726D776172655C73743130663236395C73743130663236392E613636000000000C73743130663236392E61363600000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000A9FAFFFF5E00000000000000E8030000</Data>
+ </MDITabState>
+ </MDIClientArea>
+ <ViewEx>
+ <ViewType>0</ViewType>
+ <ViewName>Build</ViewName>
+ <Window>
+ <RegID>-1</RegID>
+ <PaneID>-1</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>940100004B000000F8030000B4000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04FBFFFF5E00000068FDFFFFC7000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1005</RegID>
+ <PaneID>1005</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000650000008D0100004F030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>109</RegID>
+ <PaneID>109</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000650000008D0100004F030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1465</RegID>
+ <PaneID>1465</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1466</RegID>
+ <PaneID>1466</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1467</RegID>
+ <PaneID>1467</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1468</RegID>
+ <PaneID>1468</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1506</RegID>
+ <PaneID>1506</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1913</RegID>
+ <PaneID>1913</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1935</RegID>
+ <PaneID>1935</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1936</RegID>
+ <PaneID>1936</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1937</RegID>
+ <PaneID>1937</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1939</RegID>
+ <PaneID>1939</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1940</RegID>
+ <PaneID>1940</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1941</RegID>
+ <PaneID>1941</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1942</RegID>
+ <PaneID>1942</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>195</RegID>
+ <PaneID>195</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000650000008D0100004F030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>196</RegID>
+ <PaneID>196</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000650000008D0100004F030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>197</RegID>
+ <PaneID>197</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>000000008303000090060000D5030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>198</RegID>
+ <PaneID>198</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>000000007A010000F8030000FA010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>199</RegID>
+ <PaneID>199</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>030000008603000013040000BC030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>203</RegID>
+ <PaneID>203</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>204</RegID>
+ <PaneID>204</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>221</RegID>
+ <PaneID>221</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000000000000000000000000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>2506</RegID>
+ <PaneID>2506</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>2507</RegID>
+ <PaneID>2507</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>343</RegID>
+ <PaneID>343</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>346</RegID>
+ <PaneID>346</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35824</RegID>
+ <PaneID>35824</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35885</RegID>
+ <PaneID>35885</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35886</RegID>
+ <PaneID>35886</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35887</RegID>
+ <PaneID>35887</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35888</RegID>
+ <PaneID>35888</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35889</RegID>
+ <PaneID>35889</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35890</RegID>
+ <PaneID>35890</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35891</RegID>
+ <PaneID>35891</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35892</RegID>
+ <PaneID>35892</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35893</RegID>
+ <PaneID>35893</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35894</RegID>
+ <PaneID>35894</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35895</RegID>
+ <PaneID>35895</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35896</RegID>
+ <PaneID>35896</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35897</RegID>
+ <PaneID>35897</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35898</RegID>
+ <PaneID>35898</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35899</RegID>
+ <PaneID>35899</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35900</RegID>
+ <PaneID>35900</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35901</RegID>
+ <PaneID>35901</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35902</RegID>
+ <PaneID>35902</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35903</RegID>
+ <PaneID>35903</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35904</RegID>
+ <PaneID>35904</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35905</RegID>
+ <PaneID>35905</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>38003</RegID>
+ <PaneID>38003</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000650000008D01000058020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>38007</RegID>
+ <PaneID>38007</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>030000008603000013040000BC030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>436</RegID>
+ <PaneID>436</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>030000008603000013040000BC030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>437</RegID>
+ <PaneID>437</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>440</RegID>
+ <PaneID>440</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59392</RegID>
+ <PaneID>59392</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>882</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000000000007D0300001A000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59393</RegID>
+ <PaneID>0</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000D503000090060000E8030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59399</RegID>
+ <PaneID>59399</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>439</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>1</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>000000001A000000C201000034000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59400</RegID>
+ <PaneID>59400</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>572</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>2</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0000000034000000470200004E000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <DockMan>
+ <Len>2619</Len>
+ <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF94010000B4000000F8030000B8000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E65002000000000000004FBFFFF5E00000068FDFFFFC7000000940100004B000000F8030000B40000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF640200004B000000680200008D010000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000001800040000000000000D8FBFFFF5E00000068FDFFFFA0010000680200004B000000F80300008D0100000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF900100004B0000009401000068030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000070F9FFFF5E00000000FBFFFF84020000000000004B00000090010000680300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000076010000F80300007A01000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB0900000180008000000000000070F9FFFF8D01000068FDFFFF0D020000000000007A010000F8030000FA01000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFFC0100007A01000000020000FA01000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000068030000900600006C030000010000000100001004000000010000000000000000000000FFFFFFFF04000000C5000000C7000000B4010000779400000180008000000100000070F9FFFF8802000086FDFFFFF1020000000000006C03000090060000D50300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
+ </DockMan>
+ <ToolBar>
+ <RegID>59392</RegID>
+ <Name>File</Name>
+ <Buttons>
+ <Len>2030</Len>
+ <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000025235960000000000000003000252350370726506304646383448000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>1423</Len>
+ <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>1423</Len>
+ <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ToolBar>
+ <RegID>59399</RegID>
+ <Name>Build</Name>
+ <Buttons>
+ <Len>678</Len>
+ <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000004002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000004005000000000000000000000000000000000010000000100000000000000054275696C64B7010000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>583</Len>
+ <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>583</Len>
+ <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ToolBar>
+ <RegID>59400</RegID>
+ <Name>Debug</Name>
+ <Buttons>
+ <Len>2220</Len>
+ <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F7200000000000000000100000000000000010000000000000000000000010000000000000000000544656275673C020000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>898</Len>
+ <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>898</Len>
+ <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ControlBarsSummary>
+ <Bars>0</Bars>
+ <ScreenCX>1366</ScreenCX>
+ <ScreenCY>768</ScreenCY>
+ </ControlBarsSummary>
+ </ViewEx>
+ </WinLayoutEx>
+
+ <MDIGroups>
+ <Orientation>1</Orientation>
+ <ActiveMDIGroup>0</ActiveMDIGroup>
+ <MDIGroup>
+ <Size>100</Size>
+ <ActiveTab>0</ActiveTab>
+ <Doc>
+ <Name>&lt;1&gt;.\ident.a66</Name>
+ <ColumnNumber>9</ColumnNumber>
+ <TopLine>1</TopLine>
+ <CurrentLine>10</CurrentLine>
+ <Folding>1</Folding>
+ <ContractedFolders></ContractedFolders>
+ <PaneID>0</PaneID>
+ </Doc>
+ </MDIGroup>
+ </MDIGroups>
+
+</ProjectGui>
diff --git a/firmware/ident/ident.uvopt b/firmware/ident/ident.uvopt
new file mode 100755
index 0000000..cb41179
--- /dev/null
+++ b/firmware/ident/ident.uvopt
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
+ <Target>
+ <TargetName>Target 1</TargetName>
+ <ToolsetNumber>0x2</ToolsetNumber>
+ <ToolsetName>166/167</ToolsetName>
+ <TargetOption>
+ <MCS166>
+ <Clock>40000000</Clock>
+ <uocRom>1</uocRom>
+ <uocXCAN>1</uocXCAN>
+ <hadROM>1</hadROM>
+ <hadXRAM>1</hadXRAM>
+ <hadICAN>1</hadICAN>
+ <uocIROM2>0</uocIROM2>
+ <uocIROM3>0</uocIROM3>
+ <uocXRAM3>0</uocXRAM3>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ <ICAN>
+ <Type>0</Type>
+ <StartAddress>0xe800</StartAddress>
+ <Size>0x800</Size>
+ </ICAN>
+ <IROM>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x40000</Size>
+ </IROM>
+ <XRAM>
+ <Type>0</Type>
+ <StartAddress>0xc000</StartAddress>
+ <Size>0x2000</Size>
+ </XRAM>
+ <IRAM>
+ <Type>0</Type>
+ <StartAddress>0xf600</StartAddress>
+ <Size>0x800</Size>
+ </IRAM>
+ <IROM2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </IROM2>
+ <IROM3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </IROM3>
+ <XRAM3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </XRAM3>
+ </OnChipMemories>
+ </MCS166>
+ <OPTTT>
+ <gFlags>1</gFlags>
+ <BeepAtEnd>1</BeepAtEnd>
+ <RunSim>1</RunSim>
+ <RunTarget>0</RunTarget>
+ <RunAbUc>0</RunAbUc>
+ </OPTTT>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <FlashByte>65535</FlashByte>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ </OPTHX>
+ <OPTLEX>
+ <PageWidth>120</PageWidth>
+ <PageLength>65</PageLength>
+ <TabStop>8</TabStop>
+ <ListingPath>.\Listings\</ListingPath>
+ </OPTLEX>
+ <ListingPage>
+ <CreateCListing>1</CreateCListing>
+ <CreateAListing>1</CreateAListing>
+ <CreateLListing>1</CreateLListing>
+ <CreateIListing>0</CreateIListing>
+ <AsmCond>1</AsmCond>
+ <AsmSymb>1</AsmSymb>
+ <AsmXref>0</AsmXref>
+ <CCond>1</CCond>
+ <CCode>0</CCode>
+ <CListInc>0</CListInc>
+ <CSymb>0</CSymb>
+ <LinkerCodeListing>0</LinkerCodeListing>
+ </ListingPage>
+ <OPTXL>
+ <LMap>1</LMap>
+ <LComments>1</LComments>
+ <LGenerateSymbols>1</LGenerateSymbols>
+ <LLibSym>1</LLibSym>
+ <LLines>1</LLines>
+ <LLocSym>1</LLocSym>
+ <LPubSym>1</LPubSym>
+ <LXref>0</LXref>
+ <LExpSel>0</LExpSel>
+ </OPTXL>
+ <OPTFL>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <IsCurrentTarget>1</IsCurrentTarget>
+ </OPTFL>
+ <CpuCode>255</CpuCode>
+ <Books>
+ <Book>
+ <Number>0</Number>
+ <Title>Data Sheet</Title>
+ <Path>DATASHTS\ST\ST10F269_DS.PDF</Path>
+ </Book>
+ <Book>
+ <Number>1</Number>
+ <Title>Programming Manual</Title>
+ <Path>DATASHTS\ST\ST10_PM.PDF</Path>
+ </Book>
+ </Books>
+ <DebugOpt>
+ <uSim>1</uSim>
+ <uTrg>0</uTrg>
+ <sLdApp>1</sLdApp>
+ <sGomain>1</sGomain>
+ <sRbreak>1</sRbreak>
+ <sRwatch>1</sRwatch>
+ <sRmem>1</sRmem>
+ <sRfunc>1</sRfunc>
+ <sRbox>1</sRbox>
+ <tLdApp>1</tLdApp>
+ <tGomain>0</tGomain>
+ <tRbreak>1</tRbreak>
+ <tRwatch>1</tRwatch>
+ <tRmem>1</tRmem>
+ <tRfunc>0</tRfunc>
+ <tRbox>1</tRbox>
+ <tRtrace>1</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
+ <sRunDeb>0</sRunDeb>
+ <sLrtime>0</sLrtime>
+ <nTsel>-1</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
+ <pMon></pMon>
+ </DebugOpt>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
+ <DebugFlag>
+ <trace>0</trace>
+ <periodic>1</periodic>
+ <aLwin>0</aLwin>
+ <aCover>0</aCover>
+ <aSer1>0</aSer1>
+ <aSer2>0</aSer2>
+ <aPa>0</aPa>
+ <viewmode>0</viewmode>
+ <vrSel>0</vrSel>
+ <aSym>0</aSym>
+ <aTbox>0</aTbox>
+ <AscS1>0</AscS1>
+ <AscS2>0</AscS2>
+ <AscS3>0</AscS3>
+ <aSer3>0</aSer3>
+ <eProf>0</eProf>
+ <aLa>0</aLa>
+ <aPa1>0</aPa1>
+ <AscS4>0</AscS4>
+ <aSer4>0</aSer4>
+ <StkLoc>0</StkLoc>
+ <TrcWin>0</TrcWin>
+ <newCpu>0</newCpu>
+ <uProt>0</uProt>
+ </DebugFlag>
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ </TargetOption>
+ </Target>
+
+ <Group>
+ <GroupName>ident</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>1</tvExp>
+ <Focus>0</Focus>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>.\ident.a66</PathWithFileName>
+ <FilenameWithoutPath>ident.a66</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+</ProjectOpt>
diff --git a/firmware/ident/ident.uvproj b/firmware/ident/ident.uvproj
new file mode 100755
index 0000000..a54ef24
--- /dev/null
+++ b/firmware/ident/ident.uvproj
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
+
+ <SchemaVersion>1.1</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Targets>
+ <Target>
+ <TargetName>Target 1</TargetName>
+ <ToolsetNumber>0x2</ToolsetNumber>
+ <ToolsetName>166/167</ToolsetName>
+ <TargetOption>
+ <TargetCommonOption>
+ <Device>ST10F269</Device>
+ <Vendor>STMicroelectronics</Vendor>
+ <Cpu>IRAM (0xF600 - 0xFDFF) XRAM (0xC000-0xDFFF) XRAM2(0xE000-0xE7FF) IROM(0-0x3FFFF) ICAN(0xE800-0xEFFF) CLOCK(40000000) MOD167</Cpu>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile>"LIB\START167.A66" ("C16x/ST10 Startup Code")</StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId>3236</DeviceId>
+ <RegisterFile>REGST10F269.H</RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile></SFDFile>
+ <bCustSvd>0</bCustSvd>
+ <UseEnv>0</UseEnv>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
+ <TargetStatus>
+ <Error>0</Error>
+ <ExitCodeStop>0</ExitCodeStop>
+ <ButtonStop>0</ButtonStop>
+ <NotGenerated>0</NotGenerated>
+ <InvalidFlash>1</InvalidFlash>
+ </TargetStatus>
+ <OutputDirectory>.\Objects\</OutputDirectory>
+ <OutputName>ident</OutputName>
+ <CreateExecutable>1</CreateExecutable>
+ <CreateLib>0</CreateLib>
+ <CreateHexFile>1</CreateHexFile>
+ <DebugInformation>1</DebugInformation>
+ <BrowseInformation>1</BrowseInformation>
+ <ListingPath>.\Listings\</ListingPath>
+ <HexFormatSelection>1</HexFormatSelection>
+ <Merge32K>0</Merge32K>
+ <CreateBatchFile>0</CreateBatchFile>
+ <BeforeCompile>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
+ </BeforeCompile>
+ <BeforeMake>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopB1X>0</nStopB1X>
+ <nStopB2X>0</nStopB2X>
+ </BeforeMake>
+ <AfterMake>
+ <RunUserProg1>1</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name>Z:\mnt\shared-ntfs\bin\win\hex2bin.exe Z:\mnt\shared-ntfs\sw\firmware\ident\Objects\ident.H86</UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>2</nStopA1X>
+ <nStopA2X>0</nStopA2X>
+ </AfterMake>
+ <SelectedForBatchBuild>0</SelectedForBatchBuild>
+ <SVCSIdString></SVCSIdString>
+ </TargetCommonOption>
+ <CommonProperty>
+ <UseCPPCompiler>0</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>0</AlwaysBuild>
+ <GenerateAssemblyFile>0</GenerateAssemblyFile>
+ <AssembleAssemblyFile>0</AssembleAssemblyFile>
+ <PublicsOnly>0</PublicsOnly>
+ <StopOnExitCode>3</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>1</ComprImg>
+ </CommonProperty>
+ <DllOption>
+ <SimDllName>S166.DLL</SimDllName>
+ <SimDllArguments>-cEXTMAC</SimDllArguments>
+ <SimDlgDll>D167.DLL</SimDlgDll>
+ <SimDlgDllArguments>-p269</SimDlgDllArguments>
+ <TargetDllName>S166.DLL</TargetDllName>
+ <TargetDllArguments>-cEXTMAC</TargetDllArguments>
+ <TargetDlgDll>T167.DLL</TargetDlgDll>
+ <TargetDlgDllArguments>-p269</TargetDlgDllArguments>
+ </DllOption>
+ <DebugOption>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ <Oh166RecLen>16</Oh166RecLen>
+ </OPTHX>
+ <Simulator>
+ <UseSimulator>1</UseSimulator>
+ <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+ <RunToMain>1</RunToMain>
+ <RestoreBreakpoints>1</RestoreBreakpoints>
+ <RestoreWatchpoints>1</RestoreWatchpoints>
+ <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+ <RestoreFunctions>1</RestoreFunctions>
+ <RestoreToolbox>1</RestoreToolbox>
+ <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
+ <RestoreSysVw>1</RestoreSysVw>
+ </Simulator>
+ <Target>
+ <UseTarget>0</UseTarget>
+ <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+ <RunToMain>0</RunToMain>
+ <RestoreBreakpoints>1</RestoreBreakpoints>
+ <RestoreWatchpoints>1</RestoreWatchpoints>
+ <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+ <RestoreFunctions>0</RestoreFunctions>
+ <RestoreToolbox>1</RestoreToolbox>
+ <RestoreTracepoints>1</RestoreTracepoints>
+ <RestoreSysVw>1</RestoreSysVw>
+ </Target>
+ <RunDebugAfterBuild>0</RunDebugAfterBuild>
+ <TargetSelection>-1</TargetSelection>
+ <SimDlls>
+ <CpuDll></CpuDll>
+ <CpuDllArguments></CpuDllArguments>
+ <PeripheralDll></PeripheralDll>
+ <PeripheralDllArguments></PeripheralDllArguments>
+ <InitializationFile></InitializationFile>
+ </SimDlls>
+ <TargetDlls>
+ <CpuDll></CpuDll>
+ <CpuDllArguments></CpuDllArguments>
+ <PeripheralDll></PeripheralDll>
+ <PeripheralDllArguments></PeripheralDllArguments>
+ <InitializationFile></InitializationFile>
+ <Driver></Driver>
+ </TargetDlls>
+ </DebugOption>
+ <Utilities>
+ <Flash1>
+ <UseTargetDll>0</UseTargetDll>
+ <UseExternalTool>0</UseExternalTool>
+ <RunIndependent>0</RunIndependent>
+ <UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
+ <Capability>0</Capability>
+ <DriverSelection>-1</DriverSelection>
+ </Flash1>
+ <bUseTDR>0</bUseTDR>
+ <Flash2></Flash2>
+ <Flash3></Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
+ <FcArmLst>0</FcArmLst>
+ </Utilities>
+ <Target166>
+ <Target166Misc>
+ <MemoryModel>1</MemoryModel>
+ <RTOS>0</RTOS>
+ <NearData>6</NearData>
+ <iData>65535</iData>
+ <sData>65535</sData>
+ <bData>65535</bData>
+ <Mod167>1</Mod167>
+ <ModV2>0</ModV2>
+ <UseOnChipRom>1</UseOnChipRom>
+ <UseOnChipXramCan>1</UseOnChipXramCan>
+ <UseOnChipXram2>1</UseOnChipXram2>
+ <NearRamMemory>0</NearRamMemory>
+ <NearRomMemory>0</NearRomMemory>
+ <UseIrom2>0</UseIrom2>
+ <UseIrom3>0</UseIrom3>
+ <UseXram3>0</UseXram3>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ </OnChipMemories>
+ </Target166Misc>
+ <C166>
+ <Optimize>6</Optimize>
+ <SpeedSize>1</SpeedSize>
+ <RegisterColoring>0</RegisterColoring>
+ <UseStaticMemory>0</UseStaticMemory>
+ <WarningLevel>2</WarningLevel>
+ <AliasChecking>1</AliasChecking>
+ <VariablesInOrder>0</VariablesInOrder>
+ <CharAsUnsignedChar>0</CharAsUnsignedChar>
+ <NoDppSave>1</NoDppSave>
+ <Float64>0</Float64>
+ <SaveTempVar>0</SaveTempVar>
+ <ReorderInstruction>0</ReorderInstruction>
+ <VariousControls>
+ <MiscControls>MOD167</MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </C166>
+ <Ec166>
+ <WarningLevel>2</WarningLevel>
+ <UnsignedChar>0</UnsignedChar>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </Ec166>
+ <A166>
+ <UseMPL>1</UseMPL>
+ <CaseSensitiveSymbols>0</CaseSensitiveSymbols>
+ <VariousControls>
+ <MiscControls>MOD167</MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath>..\..\firmware\include</IncludePath>
+ </VariousControls>
+ </A166>
+ <L166>
+ <UseLinkFile>0</UseLinkFile>
+ <LinkerCmdFile></LinkerCmdFile>
+ <LinkOnly>0</LinkOnly>
+ <UseTargetSet>1</UseTargetSet>
+ <DppUsage>0</DppUsage>
+ <nDataSelection>2</nDataSelection>
+ <nConstSelection>1</nConstSelection>
+ <NearDataString></NearDataString>
+ <NearConstString></NearConstString>
+ <iStartStopString></iStartStopString>
+ <InterruptVectorAddress></InterruptVectorAddress>
+ <WarningLevel>2</WarningLevel>
+ <DisableWarningNumbers></DisableWarningNumbers>
+ <Assign></Assign>
+ <Registerbank></Registerbank>
+ <Reserve></Reserve>
+ <MiscControls></MiscControls>
+ <UserClasses></UserClasses>
+ <UserSection></UserSection>
+ </L166>
+ </Target166>
+ </TargetOption>
+ <Groups>
+ <Group>
+ <GroupName>ident</GroupName>
+ <Files>
+ <File>
+ <FileName>ident.a66</FileName>
+ <FileType>2</FileType>
+ <FilePath>.\ident.a66</FilePath>
+ </File>
+ </Files>
+ </Group>
+ </Groups>
+ </Target>
+ </Targets>
+
+</Project>
diff --git a/firmware/include/COMMON.INC b/firmware/include/COMMON.INC
new file mode 100755
index 0000000..fbad655
--- /dev/null
+++ b/firmware/include/COMMON.INC
@@ -0,0 +1,30 @@
+IDMANUF DEFR 0F07Eh
+IDCHIP DEFR 0F07Ch
+XPERCON EQU 0F024h
+
+FW2BASE EQU 0E000h ; 0F600h 0E000h
+FW2END EQU 0E7FFh ; 0F9FFh 0E7FFh
+FW2DATA EQU (FW2END + 1 - 42)
+
+FW1BASE EQU 0FA40h
+
+STACK_TOP EQU 0FC00h
+STACK_BOTTOM EQU (STACK_TOP - 256d) ; 256 bytes
+
+REGBANK0 EQU STACK_TOP
+REGBANK1 EQU (REGBANK0 + 32d)
+
+CMD_PING EQU 00h
+CMD_ERASE_BLOCKS EQU 01h
+CMD_READ EQU 02h
+CMD_WRITE EQU 03h
+CMD_IDENTIFY EQU 04h
+CMD_ERASE_CHIP EQU 05h
+
+SHELL_ACK EQU 0ABh
+
+RET_SERIAL_OVERRUN EQU 20h
+RET_BAD_ECHO EQU 21h
+RET_ERASE_ERROR EQU 30h
+RET_WRITE_ERROR EQU 31h
+
diff --git a/firmware/include/SHELL.INC b/firmware/include/SHELL.INC
new file mode 100755
index 0000000..f951a7f
--- /dev/null
+++ b/firmware/include/SHELL.INC
@@ -0,0 +1,51 @@
+CMDLOOP:
+ ; Receive command safely, EXCEPT zero word
+ CALL REC_BYTE
+ CMP R14,#0
+ JMPR CC_NE,CMDLOOP_ERROR
+ CMP R15,#CMD_PING
+ JMPR CC_NE,CMDLOOP_NO_PING
+ ; Respond to ping
+ MOV R15,#SHELL_ACK
+ CALL SEND_BYTE
+ JMP CMDLOOP
+CMDLOOP_NO_PING:
+ MOV R13,#SEND_BYTE
+ MOV R12,#REC_BYTE
+ CALL ACK_DATA
+ CMP R14,#0
+ JMPR CC_EQ,CMDLOOP_OK
+CMDLOOP_ERROR:
+ MOV R15,R14
+ CALL SEND_BYTE
+ JMP CMDLOOP
+CMDLOOP_OK:
+ PUSH R15
+ MOV R15,#0
+ CALL SEND_BYTE ; Send zero byte
+ POP R15 ; Restore command number
+
+ CMP R15,#CMD_ERASE_BLOCKS
+ JMPR CC_NE,CMDLOOP_1
+ CALL ERASE_BLOCKS
+ JMP CMDLOOP
+CMDLOOP_1:
+ CMP R15,#CMD_READ
+ JMPR CC_NE,CMDLOOP_2
+ CALL READ
+ JMP CMDLOOP
+CMDLOOP_2:
+ CMP R15,#CMD_WRITE
+ JMPR CC_NE,CMDLOOP_3
+ CALL WRITE
+ JMP CMDLOOP
+CMDLOOP_3:
+ CMP R15,#CMD_IDENTIFY
+ JMPR CC_NE,CMDLOOP_4
+ CALL IDENTIFY
+ JMP CMDLOOP
+CMDLOOP_4:
+ CMP R15,#CMD_ERASE_CHIP
+ JMPR CC_NE,CMDLOOP
+ CALL ERASE_CHIP
+ JMP CMDLOOP
diff --git a/firmware/include/SUBROUTINES.INC b/firmware/include/SUBROUTINES.INC
new file mode 100755
index 0000000..65d5f55
--- /dev/null
+++ b/firmware/include/SUBROUTINES.INC
@@ -0,0 +1,177 @@
+IDENTIFY PROC NEAR
+ MOV R15,IDMANUF
+ CALL SEND
+ MOV R15,IDCHIP
+ CALL SEND
+ RET
+IDENTIFY ENDP
+
+
+; Vstup: R8:R7 global counter, R10 block counter
+; Vystup: R14 navratovy kod (0 pokracuje sa, 1 ukoncit spracovanie)
+CHECK_COUNT PROC NEAR
+ ; Defaultny navratovy kod je "pokracovat"
+ MOV R14,#0
+ ; Dekrementujeme globalny citac
+ SUB R7,#2
+ SUBC R8,#0
+ CMP R8,#0
+ JMPR CC_NE,CHECK_COUNT_BLOCK
+ CMP R7,#0
+ JMPR CC_NE,CHECK_COUNT_BLOCK
+ ; Uspesne koncime, mame precitany potrebny pocet bajtov
+ MOV R14,#1
+ JMP CHECK_RET_SEND
+CHECK_COUNT_BLOCK:
+ ; Dekrementujeme citac 1024 bajtoveho bloku
+ SUB R10,#2
+ CMP R10,#0
+ JMPR CC_NE,CHECK_RET
+CHECK_RET_SEND:
+ ; Odosleme nulu
+ MOV R15,#0
+ CALL SEND
+ ; Resetujeme citac 1024 bajtoveho bloku
+ MOV R10,#1024
+ ; Posleme hodnotu globalneho citaca
+ MOV R15,R7
+ CALL SEND
+ MOV R15,R8
+ CALL SEND
+CHECK_RET:
+ RET
+CHECK_COUNT ENDP
+
+;-------------------------------------------------------------------------------
+; Safe receive
+;-------------------------------------------------------------------------------
+; !! Posiela do PC kod chyby
+REC_SAFE PROC NEAR
+ ; Vystup: R14 navratovy kod, R15 data (slovo)
+ CALL REC
+ CMP R14,#0
+ JMPR CC_NE,REC_SAFE_RETURN_NO_SEND
+ CALL ACK_WORD
+ ; Send result of safe receiving
+REC_SAFE_RETURN:
+ PUSH R15
+ MOV R15,R14
+ CALL SEND
+ POP R15
+REC_SAFE_RETURN_NO_SEND:
+ RET
+REC_SAFE ENDP
+
+
+REC_DWORD_SAFE PROC NEAR
+ ; Vystup: R14 navratovy kod, R8:R7 data (dvojslovo)
+ PUSH R15
+ CALL REC_SAFE
+ CMP R14,#0
+ JMPR CC_NE,REC_DWORD_ERROR
+ MOV R7,R15
+ CALL REC_SAFE
+ CMP R14,#0
+ JMPR CC_NE,REC_DWORD_ERROR
+ MOV R8,R15
+REC_DWORD_ERROR:
+ POP R15
+ RET
+REC_DWORD_SAFE ENDP
+
+
+ACK_WORD PROC NEAR
+ PUSH R12
+ PUSH R13
+ MOV R13,#SEND
+ MOV R12,#REC
+ CALL ACK_DATA
+ POP R13
+ POP R12
+ RET
+ACK_WORD ENDP
+
+
+ACK_DATA PROC NEAR
+ ; Vstup: R15 data (slovo), R13 (pointer na SEND), R12 (pointer na REC)
+ ; Vystup: R14 navratovy kod, R15 data (slovo)
+ PUSH R0
+ PUSH R15
+ MOV R14,#RET_BAD_ECHO
+ MOV R0,R15
+ CALL [R13] ; SEND
+ CALL [R12] ; RECEIVE
+ ; Serial buffer overrun?
+ CMP R14,#0
+ JMPR CC_NE,ACK_DATA_RETURN ; Return code is already in R14
+ ; Good echo from PC?
+ CMP R15,R0
+ JMPR CC_NE,ACK_DATA_RETURN ; Return code is already in R14
+ ; Everything is OK
+ MOV R14,#0
+ACK_DATA_RETURN:
+ POP R15
+ POP R0
+ RET
+ACK_DATA ENDP
+
+;-------------------------------------------------------------------------------
+; Send and receive
+;-------------------------------------------------------------------------------
+SEND PROC NEAR
+ ; Posle slovo.
+ ; Vstup: R15
+ ; Zachovava: R15
+ PUSH R15
+ CALL SEND_BYTE
+ SHR R15,#8
+ CALL SEND_BYTE
+ POP R15
+ RET
+SEND ENDP
+
+
+SEND_BYTE PROC NEAR
+ ; Posle nizsi bajt zo slova.
+ ; Vstup: R15
+ ; Zachovava: R15
+SEND_BYTE_1:
+ JNB S0TIC.7,SEND_BYTE_1
+ BCLR S0TIC.7
+ MOV S0TBUF,R15 ; bity 9 az 15 su nevyznamne
+ RET
+SEND_BYTE ENDP
+
+
+REC PROC NEAR
+ ; Vystup: R15 data, R14 navratovy kod
+ PUSH R0
+ CALL REC_BYTE ; Receive low byte
+ CMP R14,#0
+ JMPR CC_NE,REC_OK
+ MOV R0,R15 ; high byte bude vzdy 0
+ CALL REC_BYTE
+ SHL R15,#8
+ OR R15,R0
+REC_OK:
+ POP R0
+ RET
+REC ENDP
+
+
+REC_BYTE PROC NEAR
+ ; Vystup: R15 data (low byte), R14 navratovy kod
+REC_BYTE_1:
+ JNB S0RIC.7,REC_BYTE_1
+ JB S0CON.10,REC_BYTE_ERR
+ MOV R15,S0RBUF ; nevyznamne bity pre dany operacny rezim serioveho rozhrania budu precitane ako 0
+ BCLR S0RIC.7
+ ; Successfully received word
+ MOV R14,#0
+ JMP REC_BYTE_OK
+REC_BYTE_ERR:
+ BCLR S0CON.10
+ MOV R14,#RET_SERIAL_OVERRUN
+REC_BYTE_OK:
+ RET
+REC_BYTE ENDP
diff --git a/firmware/main.uvmpw b/firmware/main.uvmpw
new file mode 100755
index 0000000..62fb37e
--- /dev/null
+++ b/firmware/main.uvmpw
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectWorkspace xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_mpw.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <WorkspaceName>WorkSpace</WorkspaceName>
+
+ <project>
+ <PathAndName>.\ident\ident.uvproj</PathAndName>
+ <NodeIsExpanded>1</NodeIsExpanded>
+ </project>
+
+ <project>
+ <PathAndName>.\stage_1\stage_1.uvproj</PathAndName>
+ <NodeIsExpanded>1</NodeIsExpanded>
+ </project>
+
+ <project>
+ <PathAndName>.\st10f168\st10f168.uvproj</PathAndName>
+ <NodeIsExpanded>1</NodeIsExpanded>
+ </project>
+
+ <project>
+ <PathAndName>.\st10f269\st10f269.uvproj</PathAndName>
+ <NodeIsActive>1</NodeIsActive>
+ <NodeIsExpanded>1</NodeIsExpanded>
+ </project>
+
+</ProjectWorkspace>
diff --git a/firmware/main.uvmpw.uvgui.jan b/firmware/main.uvmpw.uvgui.jan
new file mode 100755
index 0000000..c3f94d7
--- /dev/null
+++ b/firmware/main.uvmpw.uvgui.jan
@@ -0,0 +1,1306 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectGui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_gui.xsd">
+
+ <SchemaVersion>-5.1</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <WinLayoutEx>
+ <sActiveDebugView></sActiveDebugView>
+ <WindowPosition>
+ <length>44</length>
+ <flags>0</flags>
+ <showCmd>3</showCmd>
+ <MinPosition>
+ <xPos>-1</xPos>
+ <yPos>-1</yPos>
+ </MinPosition>
+ <MaxPosition>
+ <xPos>-1684</xPos>
+ <yPos>-4</yPos>
+ </MaxPosition>
+ <NormalPosition>
+ <Top>89</Top>
+ <Left>-1243</Left>
+ <Right>-322</Right>
+ <Bottom>869</Bottom>
+ </NormalPosition>
+ </WindowPosition>
+ <MDIClientArea>
+ <RegID>0</RegID>
+ <MDITabState>
+ <Len>381</Len>
+ <Data>010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000001000000020000000000000001000000495A3A5C686F6D655C6A616E5C746D705C736B6F6C615C42505C746578745C5553425F464C4153485C7372635C696D706C5C6669726D776172655C6964656E745C6964656E742E61363600000000096964656E742E61363600000000BECEA100FFFFFFFF4F5A3A5C686F6D655C6A616E5C746D705C736B6F6C615C42505C746578745C5553425F464C4153485C7372635C696D706C5C6669726D776172655C73743130663236395C73743130663236392E613636000000000C73743130663236392E61363600000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000A9FAFFFF5E00000000000000E8030000</Data>
+ </MDITabState>
+ </MDIClientArea>
+ <ViewEx>
+ <ViewType>0</ViewType>
+ <ViewName>Build</ViewName>
+ <Window>
+ <RegID>-1</RegID>
+ <PaneID>-1</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>940100004B000000F8030000B4000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04FBFFFF5E00000068FDFFFFC7000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1005</RegID>
+ <PaneID>1005</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000065000000320100007E020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>109</RegID>
+ <PaneID>109</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000065000000320100007E020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1465</RegID>
+ <PaneID>1465</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1466</RegID>
+ <PaneID>1466</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1467</RegID>
+ <PaneID>1467</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1468</RegID>
+ <PaneID>1468</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1506</RegID>
+ <PaneID>1506</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1913</RegID>
+ <PaneID>1913</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1935</RegID>
+ <PaneID>1935</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1936</RegID>
+ <PaneID>1936</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1937</RegID>
+ <PaneID>1937</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1939</RegID>
+ <PaneID>1939</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1940</RegID>
+ <PaneID>1940</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1941</RegID>
+ <PaneID>1941</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1942</RegID>
+ <PaneID>1942</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>195</RegID>
+ <PaneID>195</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000065000000320100007E020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>196</RegID>
+ <PaneID>196</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000065000000320100007E020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>197</RegID>
+ <PaneID>197</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000B202000035010000D5030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>70F9FFFF1802000000000000C3020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>198</RegID>
+ <PaneID>198</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>000000007A010000F8030000FA010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>199</RegID>
+ <PaneID>199</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000B50200003201000044040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>70F9FFFF1802000000000000C3020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>203</RegID>
+ <PaneID>203</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>204</RegID>
+ <PaneID>204</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>221</RegID>
+ <PaneID>221</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000000000000000000000000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>2506</RegID>
+ <PaneID>2506</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>2507</RegID>
+ <PaneID>2507</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>343</RegID>
+ <PaneID>343</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>346</RegID>
+ <PaneID>346</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35824</RegID>
+ <PaneID>35824</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35885</RegID>
+ <PaneID>35885</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35886</RegID>
+ <PaneID>35886</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35887</RegID>
+ <PaneID>35887</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35888</RegID>
+ <PaneID>35888</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35889</RegID>
+ <PaneID>35889</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35890</RegID>
+ <PaneID>35890</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35891</RegID>
+ <PaneID>35891</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35892</RegID>
+ <PaneID>35892</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35893</RegID>
+ <PaneID>35893</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35894</RegID>
+ <PaneID>35894</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35895</RegID>
+ <PaneID>35895</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35896</RegID>
+ <PaneID>35896</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35897</RegID>
+ <PaneID>35897</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35898</RegID>
+ <PaneID>35898</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35899</RegID>
+ <PaneID>35899</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35900</RegID>
+ <PaneID>35900</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35901</RegID>
+ <PaneID>35901</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35902</RegID>
+ <PaneID>35902</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35903</RegID>
+ <PaneID>35903</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35904</RegID>
+ <PaneID>35904</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35905</RegID>
+ <PaneID>35905</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>38003</RegID>
+ <PaneID>38003</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>030000006500000032010000F6010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>38007</RegID>
+ <PaneID>38007</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000B50200003201000044040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>70F9FFFF1802000000000000C3020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>436</RegID>
+ <PaneID>436</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000B50200003201000044040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>70F9FFFF1802000000000000C3020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>437</RegID>
+ <PaneID>437</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>440</RegID>
+ <PaneID>440</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59392</RegID>
+ <PaneID>59392</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>882</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000000000007D0300001A000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59393</RegID>
+ <PaneID>0</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000D503000090060000E8030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59399</RegID>
+ <PaneID>59399</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>439</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>1</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>000000001A000000C201000034000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59400</RegID>
+ <PaneID>59400</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>572</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>2</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0000000034000000470200004E000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <DockMan>
+ <Len>2611</Len>
+ <Data>000000000A000000000000000020000000000000FFFFFFFFFFFFFFFF94010000B4000000F8030000B8000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E65002000000000000004FBFFFF5E00000068FDFFFFC7000000940100004B000000F8030000B40000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF640200004B000000680200008D010000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000001800040000000000000D8FBFFFF5E00000068FDFFFFA0010000680200004B000000F80300008D0100000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF350100004B00000039010000D50300000100000002000010040000000100000023FFFFFFA902000000000000000000000000000001000000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000070F9FFFF5E000000A5FAFFFF22020000000000004B00000035010000970200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFF04000000C5000000C7000000B4010000779400000180001000000100000070F9FFFF26020000A5FAFFFFE8030000000000009B02000035010000D50300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF000000000000000002000000000000000100000002000000FFFFFFFF0000000097020000350100009B020000010000000100001004000000000000003EFEFFFFC001000000000000000000000000000002000000FFFFFFFFED030000FFFFFFFFC500000001000000FFFFFFFFC500000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000076010000F80300007A01000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB0900000180008000000000000070F9FFFF8D01000068FDFFFF0D020000000000007A010000F8030000FA01000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFFC0100007A01000000020000FA01000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000000000000000000</Data>
+ </DockMan>
+ <ToolBar>
+ <RegID>59392</RegID>
+ <Name>File</Name>
+ <Buttons>
+ <Len>2204</Len>
+ <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000005434F4E53549600000000000000130005434F4E53540445585453085245435F534146450F5245545F57524954455F4552524F520252300A5245435F434F4E464947035231330841434B5F574F52440352313504454E445009534358542043502C52055265736574013209524541445F444F4E4503464152025235037072650630464638344802523400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>1423</Len>
+ <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>1423</Len>
+ <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ToolBar>
+ <RegID>59399</RegID>
+ <Name>Build</Name>
+ <Buttons>
+ <Len>678</Len>
+ <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000004002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000004005000000000000000000000000000000000010000000100000000000000054275696C64B7010000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>583</Len>
+ <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>583</Len>
+ <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ToolBar>
+ <RegID>59400</RegID>
+ <Name>Debug</Name>
+ <Buttons>
+ <Len>2220</Len>
+ <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F7201000000000000000100000000000000010000000000000000000000010000000000000000000544656275673C020000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>898</Len>
+ <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>898</Len>
+ <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ControlBarsSummary>
+ <Bars>0</Bars>
+ <ScreenCX>1366</ScreenCX>
+ <ScreenCY>768</ScreenCY>
+ </ControlBarsSummary>
+ </ViewEx>
+ </WinLayoutEx>
+
+ <MDIGroups>
+ <Orientation>1</Orientation>
+ <ActiveMDIGroup>0</ActiveMDIGroup>
+ <MDIGroup>
+ <Size>100</Size>
+ <ActiveTab>0</ActiveTab>
+ <Doc>
+ <Name>&lt;1&gt;.\ident.a66</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>1</TopLine>
+ <CurrentLine>1</CurrentLine>
+ <Folding>0</Folding>
+ <ContractedFolders></ContractedFolders>
+ <PaneID>0</PaneID>
+ </Doc>
+ <Doc>
+ <Name>&lt;4&gt;.\st10f269.a66</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>72</TopLine>
+ <CurrentLine>123</CurrentLine>
+ <Folding>0</Folding>
+ <ContractedFolders></ContractedFolders>
+ <PaneID>0</PaneID>
+ </Doc>
+ </MDIGroup>
+ </MDIGroups>
+
+</ProjectGui>
diff --git a/firmware/st10f168/Objects/st10f168.SBR b/firmware/st10f168/Objects/st10f168.SBR
new file mode 100755
index 0000000..5ce35c3
--- /dev/null
+++ b/firmware/st10f168/Objects/st10f168.SBR
Binary files differ
diff --git a/firmware/st10f168/Objects/st10f168.bin b/firmware/st10f168/Objects/st10f168.bin
new file mode 100755
index 0000000..bdde05c
--- /dev/null
+++ b/firmware/st10f168/Objects/st10f168.bin
Binary files differ
diff --git a/firmware/st10f168/st10f168.a66 b/firmware/st10f168/st10f168.a66
new file mode 100755
index 0000000..0ae78af
--- /dev/null
+++ b/firmware/st10f168/st10f168.a66
@@ -0,0 +1,273 @@
+$MOD167
+$SEGMENTED
+
+$INCLUDE (REG167.INC)
+$INCLUDE (COMMON.INC)
+
+CONST_2TCL EQU (REGBANK1 + 32d) ; premenna
+
+NAME FIRMWARE_ST10F168
+ASSUME DPP3: SYSTEM
+
+FW_DATA SECTION DATA WORD AT FW2DATA
+ ; Control array of structures {segment, address, length in words} for read and write operations
+ FLASH_MAPPING:
+ DW 0,0,(32*1024)/2
+ DW 1,8000h,(32*1024)/2
+ DW 2,0000h,(64*1024)/2
+ DW 3,0000h,(32*1024)/2
+ DW 3,8000h,(32*1024)/2
+ DW 4,0000h,(64*1024)/2 ; Length is not needed
+FW_DATA ENDS
+
+FW_ST10F168 SECTION CODE AT FW2BASE
+;-------------------------------------------------------------------------------
+; Main procedure
+;
+; Caka na slovo prikazu, odosle ho naspat pre potvrdenie a to iste musi znovu
+; prijat.
+;-------------------------------------------------------------------------------
+MAIN PROC
+ ; Default register bank
+ MOV CP,#REGBANK0
+ ; Zapneme serial buffer overrun detection
+ BSET S0CON.7
+ ; Init stack, size = 128 words, 256 bytes
+ MOV R0,SYSCON
+ AND R0,#3FFFh
+ OR R0,#2000h
+ MOV SYSCON,R0
+
+ MOV STKUN, #STACK_TOP
+ MOV STKOV, #STACK_BOTTOM
+ MOV SP, #STACK_TOP
+
+ NOP
+ NOP
+
+ MOV DPP0,#0
+ MOV DPP1,#1
+ MOV DPP2,#2
+ MOV DPP3,#3
+
+ ; Signalize successful initialization
+ MOV R15,#0
+ CALL SEND
+;-----------------------------------------------------------------------
+; Command loop
+;-----------------------------------------------------------------------
+$INCLUDE (SHELL.INC)
+
+MAIN ENDP
+
+;-------------------------------------------------------------------------------
+; Receive config information (1 word)
+;-------------------------------------------------------------------------------
+REC_CONFIG PROC NEAR
+ ; Get 2TCL constant
+ CALL REC_SAFE
+ CMP R14,#0
+ JMPR CC_NE,REC_CONFIG_ERROR
+ MOV CONST_2TCL,R15
+REC_CONFIG_ERROR:
+ RET
+REC_CONFIG ENDP
+
+;-------------------------------------------------------------------------------
+; Erase chip
+;-------------------------------------------------------------------------------
+ERASE_CHIP PROC NEAR
+ SCXT CP,#REGBANK1
+ ; Receive 2TCL constant for R4 STEAK
+ CALL REC_CONFIG
+ CMP R14,#0
+ JMPR CC_NE,ERASE_CHIP_ERROR
+ MOV R13,#0Fh ; Erase all blocks
+ JMP ERASE_BLOCKS_MASK_OK
+ERASE_CHIP_ERROR:
+ POP CP
+ RET
+ERASE_CHIP ENDP
+
+;-------------------------------------------------------------------------------
+; Erase blocks
+;-------------------------------------------------------------------------------
+ERASE_BLOCKS PROC NEAR
+ SCXT CP,#REGBANK1
+ ; Receive 2TCL constant for R4 STEAK
+ CALL REC_CONFIG
+ CMP R14,#0
+ JMPR CC_NE,ERASE_BLOCKS_ERROR
+ ; Receive mask of blocks going to be erased
+ CALL REC_SAFE
+ ; Store mask
+ MOV R13,R15
+ ; Exit if there was an error
+ CMP R14,#0
+ JMPR CC_EQ,ERASE_BLOCKS_MASK_OK
+ERASE_BLOCKS_ERROR:
+ POP CP
+ RET
+
+ERASE_BLOCKS_MASK_OK:
+ ; Erase blocks command
+ MOV R0,#0EEEEh
+ MOV R1,#5555h
+ MOV R2,#0 ; Block counter
+ ; V R13 mame masku
+ERASE_BLOCKS_LOOP:
+ ROR R13,#1
+ JNB PSW.1,ERASE_BLOCKS_NEXT
+ MOV R3,R2
+ CALL UNLOCK_SEQUENCE
+ ; Check return code
+ CMP R14,#0
+ JMPR CC_NE,ERASE_BLOCKS_DONE
+ERASE_BLOCKS_NEXT:
+ CMPI1 R2,#2
+ JMPR CC_UGT,ERASE_BLOCKS_DONE
+ JMP ERASE_BLOCKS_LOOP
+ERASE_BLOCKS_DONE:
+ MOV R15,R14
+ CALL SEND
+ POP CP
+ RET
+ERASE_BLOCKS ENDP
+
+;-------------------------------------------------------------------------------
+; Read
+;-------------------------------------------------------------------------------
+READ PROC NEAR
+ SCXT CP,#REGBANK1
+ ; Receive 2TCL constant for R4 STEAK
+ CALL REC_CONFIG
+ CMP R14,#0
+ JMPR CC_NE,READ_ERROR
+ ; Prijmeme pocet bajtov pre precitanie
+ CALL REC_DWORD_SAFE
+ CMP R14,#0
+ JMPR CC_NE,READ_ERROR
+ ; Pocitadlo velkosti 1024 bajtoveho bloku
+ MOV R10,#1024
+ ; Base of the control table
+ MOV R11,#DPP3:FLASH_MAPPING
+
+READ_START:
+ MOV R0,[R11] ; Get segment, R0
+ ADD R11,#2
+ MOV R1,[R11] ; Get start address, R1
+ ADD R11,#2
+ MOV R2,[R11] ; Get data length to read, R2
+ ADD R11,#2
+READ_LOOP:
+ ; Read word
+ EXTS R0,#1
+ MOV R15,[R1]
+ CALL SEND
+ CALL CHECK_COUNT
+ CMP R14,#1
+ JMPR CC_EQ,READ_DONE
+ ADD R1,#2 ; Set address of the next word
+ SUB R2,#1 ; Decrement word counter
+ JMPR CC_NZ,READ_LOOP
+ JMP READ_START
+
+READ_ERROR:
+READ_DONE:
+ POP CP
+ RET
+READ ENDP
+
+;-------------------------------------------------------------------------------
+; Write
+;-------------------------------------------------------------------------------
+WRITE PROC NEAR
+ SCXT CP,#REGBANK1
+ ; Receive 2TCL constant for R4 STEAK
+ CALL REC_CONFIG
+ CMP R14,#0
+ JMPR CC_NE,WRITE_ERROR
+ ; Prijmeme pocet bajtov pre zapis
+ CALL REC_DWORD_SAFE
+ CMP R14,#0
+ JMPR CC_NE,WRITE_ERROR
+ ; Pocitadlo velkosti 1024 bajtoveho bloku
+ MOV R10,#1024
+ ; Base of the control table
+ MOV R11,#DPP3:FLASH_MAPPING
+WRITE_START:
+ MOV R0,[R11] ; Get segment number, R0
+ AND R0,#000Fh ; Skonstruujeme prikaz
+ OR R0,#55A0h
+ ADD R11,#2
+ MOV R1,[R11] ; Get start address, R1
+ ADD R11,#2
+ MOV R5,[R11] ; Get data length to write, R5
+ ADD R11,#2
+WRITE_LOOP:
+ CALL REC
+ CMP R14,#0
+ JMPR CC_NE,WRITE_SEND_ERROR
+ MOV R2,R15
+ ; Write word
+ CALL UNLOCK_SEQUENCE
+ CMP R14,#0
+ JMPR CC_NE,WRITE_SEND_ERROR
+ CALL CHECK_COUNT
+ CMP R14,#1
+ JMPR CC_EQ,WRITE_DONE
+ ADD R1,#2
+ SUB R5,#1
+ JMPR CC_NZ,WRITE_LOOP
+ JMP WRITE_START
+
+WRITE_SEND_ERROR:
+ MOV R15,R14
+ CALL SEND
+WRITE_ERROR:
+WRITE_DONE:
+ POP CP
+ RET
+WRITE ENDP
+
+;-------------------------------------------------------------------------------
+; Helper subroutines
+;-------------------------------------------------------------------------------
+$INCLUDE (SUBROUTINES.INC)
+
+; Vstup: R0, R1, R2, R3, R4
+; Vystup: R14 navratovy kod
+; Zachovava: R0, R1, R2, R3, R4
+UNLOCK_SEQUENCE PROC NEAR
+ PUSH R0
+ PUSH R1
+ PUSH R2
+ PUSH R3
+ PUSH R6
+
+ MOV R4,CONST_2TCL ; Perioda hodinoveho signalu v ns
+ ; Unlock sequence
+ MOV R6,#8000h
+
+ EXTS #1,#2
+ MOV 8000h,R6
+ MOV [R6],R6
+ NOP
+ NOP
+ MOV R14,R0
+
+ POP R6
+ POP R3
+ POP R2
+ POP R1
+ POP R0
+ RET
+UNLOCK_SEQUENCE ENDP
+;-------------------------------------------------------------------------------
+; End of helper subroutines
+;-------------------------------------------------------------------------------
+
+FW_ST10F168 ENDS
+
+
+END \ No newline at end of file
diff --git a/firmware/st10f168/st10f168.uvgui.jan b/firmware/st10f168/st10f168.uvgui.jan
new file mode 100755
index 0000000..e4d3aee
--- /dev/null
+++ b/firmware/st10f168/st10f168.uvgui.jan
@@ -0,0 +1,1360 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectGui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_gui.xsd">
+
+ <SchemaVersion>-5.1</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <ViewPool/>
+
+ <SECTreeCtrl>
+ <View>
+ <WinId>38003</WinId>
+ <ViewName>Registers</ViewName>
+ <TableColWidths>115 184</TableColWidths>
+ </View>
+ <View>
+ <WinId>346</WinId>
+ <ViewName>Code Coverage</ViewName>
+ <TableColWidths>442 160</TableColWidths>
+ </View>
+ <View>
+ <WinId>204</WinId>
+ <ViewName>Performance Analyzer</ViewName>
+ <TableColWidths>602</TableColWidths>
+ </View>
+ </SECTreeCtrl>
+
+ <TreeListPane>
+ <View>
+ <WinId>1506</WinId>
+ <ViewName>Symbols</ViewName>
+ <UserString></UserString>
+ <TableColWidths>133 133 133</TableColWidths>
+ </View>
+ <View>
+ <WinId>1936</WinId>
+ <ViewName>Watch 1</ViewName>
+ <UserString></UserString>
+ <TableColWidths>133 133 133</TableColWidths>
+ </View>
+ <View>
+ <WinId>1937</WinId>
+ <ViewName>Watch 2</ViewName>
+ <UserString></UserString>
+ <TableColWidths>133 133 133</TableColWidths>
+ </View>
+ <View>
+ <WinId>1935</WinId>
+ <ViewName>Call Stack + Locals</ViewName>
+ <UserString></UserString>
+ <TableColWidths>133 133 133</TableColWidths>
+ </View>
+ <View>
+ <WinId>2506</WinId>
+ <ViewName>Trace Data</ViewName>
+ <UserString></UserString>
+ <TableColWidths>75 135 130 95 70 230 200 150</TableColWidths>
+ </View>
+ </TreeListPane>
+
+ <WindowSettings>
+ <LogicAnalizer>
+ <ShowLACursor>1</ShowLACursor>
+ <ShowSignalInfo>1</ShowSignalInfo>
+ <ShowCycles>0</ShowCycles>
+ <LeftSideBarSize>0</LeftSideBarSize>
+ <TimeBaseIndex>-1</TimeBaseIndex>
+ </LogicAnalizer>
+ </WindowSettings>
+
+ <WinLayoutEx>
+ <sActiveDebugView></sActiveDebugView>
+ <WindowPosition>
+ <length>44</length>
+ <flags>0</flags>
+ <showCmd>3</showCmd>
+ <MinPosition>
+ <xPos>-1</xPos>
+ <yPos>-1</yPos>
+ </MinPosition>
+ <MaxPosition>
+ <xPos>-1684</xPos>
+ <yPos>-4</yPos>
+ </MaxPosition>
+ <NormalPosition>
+ <Top>89</Top>
+ <Left>-1243</Left>
+ <Right>-322</Right>
+ <Bottom>869</Bottom>
+ </NormalPosition>
+ </WindowPosition>
+ <MDIClientArea>
+ <RegID>0</RegID>
+ <MDITabState>
+ <Len>381</Len>
+ <Data>010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000001000000020000000000000001000000495A3A5C686F6D655C6A616E5C746D705C736B6F6C615C42505C746578745C5553425F464C4153485C7372635C696D706C5C6669726D776172655C6964656E745C6964656E742E61363600000000096964656E742E61363600000000BECEA100FFFFFFFF4F5A3A5C686F6D655C6A616E5C746D705C736B6F6C615C42505C746578745C5553425F464C4153485C7372635C696D706C5C6669726D776172655C73743130663236395C73743130663236392E613636000000000C73743130663236392E61363600000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000A9FAFFFF5E00000000000000E8030000</Data>
+ </MDITabState>
+ </MDIClientArea>
+ <ViewEx>
+ <ViewType>0</ViewType>
+ <ViewName>Build</ViewName>
+ <Window>
+ <RegID>-1</RegID>
+ <PaneID>-1</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>940100004B000000F8030000B4000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>56FDFFFF50010000BAFFFFFFB9010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1005</RegID>
+ <PaneID>1005</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000650000008D0100007B010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>109</RegID>
+ <PaneID>109</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000650000008D0100007B010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1465</RegID>
+ <PaneID>1465</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1466</RegID>
+ <PaneID>1466</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1467</RegID>
+ <PaneID>1467</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1468</RegID>
+ <PaneID>1468</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1506</RegID>
+ <PaneID>1506</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1913</RegID>
+ <PaneID>1913</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1935</RegID>
+ <PaneID>1935</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1936</RegID>
+ <PaneID>1936</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1937</RegID>
+ <PaneID>1937</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1939</RegID>
+ <PaneID>1939</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1940</RegID>
+ <PaneID>1940</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1941</RegID>
+ <PaneID>1941</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1942</RegID>
+ <PaneID>1942</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>195</RegID>
+ <PaneID>195</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000650000008D0100007B010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>196</RegID>
+ <PaneID>196</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000650000008D0100007B010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>197</RegID>
+ <PaneID>197</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000AF01000090010000DE020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>70F9FFFF1802000000000000C3020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>198</RegID>
+ <PaneID>198</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>000000007A010000F8030000FA010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>199</RegID>
+ <PaneID>199</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000B20100008D010000C5020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>70F9FFFF1802000000000000C3020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>203</RegID>
+ <PaneID>203</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>204</RegID>
+ <PaneID>204</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>221</RegID>
+ <PaneID>221</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000000000000000000000000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>2506</RegID>
+ <PaneID>2506</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>2507</RegID>
+ <PaneID>2507</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>343</RegID>
+ <PaneID>343</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>346</RegID>
+ <PaneID>346</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35824</RegID>
+ <PaneID>35824</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35885</RegID>
+ <PaneID>35885</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35886</RegID>
+ <PaneID>35886</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35887</RegID>
+ <PaneID>35887</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35888</RegID>
+ <PaneID>35888</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35889</RegID>
+ <PaneID>35889</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35890</RegID>
+ <PaneID>35890</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35891</RegID>
+ <PaneID>35891</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35892</RegID>
+ <PaneID>35892</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35893</RegID>
+ <PaneID>35893</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35894</RegID>
+ <PaneID>35894</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35895</RegID>
+ <PaneID>35895</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35896</RegID>
+ <PaneID>35896</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35897</RegID>
+ <PaneID>35897</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35898</RegID>
+ <PaneID>35898</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35899</RegID>
+ <PaneID>35899</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35900</RegID>
+ <PaneID>35900</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35901</RegID>
+ <PaneID>35901</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35902</RegID>
+ <PaneID>35902</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35903</RegID>
+ <PaneID>35903</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35904</RegID>
+ <PaneID>35904</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35905</RegID>
+ <PaneID>35905</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>38003</RegID>
+ <PaneID>38003</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000650000008D0100007B010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>38007</RegID>
+ <PaneID>38007</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000B20100008D010000C5020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>70F9FFFF1802000000000000C3020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>436</RegID>
+ <PaneID>436</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000B20100008D010000C5020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>70F9FFFF1802000000000000C3020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>437</RegID>
+ <PaneID>437</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>440</RegID>
+ <PaneID>440</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59392</RegID>
+ <PaneID>59392</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>882</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000000000007D0300001A000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59393</RegID>
+ <PaneID>0</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000DE02000016040000F1020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59399</RegID>
+ <PaneID>59399</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>439</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>1</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>000000001A000000C201000034000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59400</RegID>
+ <PaneID>59400</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>572</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>2</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0000000034000000470200004E000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <DockMan>
+ <Len>2611</Len>
+ <Data>000000000A000000000000000020000000000000FFFFFFFFFFFFFFFF94010000B4000000F8030000B8000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E65002000000000000056FDFFFF50010000BAFFFFFFB9010000940100004B000000F8030000B40000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF640200004B000000680200008D010000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C0000018000400000000000002AFEFFFF50010000BAFFFFFF92020000680200004B000000F80300008D0100000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF900100004B00000094010000DE02000001000000020000100400000001000000000000000000000000000000000000000000000001000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000C2FBFFFF5001000052FDFFFF99020000000000004B00000090010000940100000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFF04000000C5000000C7000000B40100007794000001800010000001000000C2FBFFFF9D02000052FDFFFFE3030000000000009801000090010000DE0200000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF000000000000000002000000000000000100000002000000FFFFFFFF0000000094010000900100009801000001000000010000100400000000000000CCFDFFFF4E01000000000000000000000000000002000000FFFFFFFFED030000FFFFFFFFC500000001000000FFFFFFFFC500000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000076010000F80300007A01000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000C2FBFFFF7F020000BAFFFFFFFF020000000000007A010000F8030000FA01000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFFC0100007A01000000020000FA01000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000000000000000000</Data>
+ </DockMan>
+ <ToolBar>
+ <RegID>59392</RegID>
+ <Name>File</Name>
+ <Buttons>
+ <Len>2030</Len>
+ <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000025235960000000000000003000252350370726506304646383448000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>1423</Len>
+ <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>1423</Len>
+ <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ToolBar>
+ <RegID>59399</RegID>
+ <Name>Build</Name>
+ <Buttons>
+ <Len>678</Len>
+ <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000004002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000004005000000000000000000000000000000000010000000100000000000000054275696C64B7010000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>583</Len>
+ <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>583</Len>
+ <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ToolBar>
+ <RegID>59400</RegID>
+ <Name>Debug</Name>
+ <Buttons>
+ <Len>2220</Len>
+ <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F7201000000000000000100000000000000010000000000000000000000010000000000000000000544656275673C020000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>898</Len>
+ <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>898</Len>
+ <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ControlBarsSummary>
+ <Bars>0</Bars>
+ <ScreenCX>1366</ScreenCX>
+ <ScreenCY>768</ScreenCY>
+ </ControlBarsSummary>
+ </ViewEx>
+ </WinLayoutEx>
+
+ <MDIGroups>
+ <Orientation>1</Orientation>
+ <ActiveMDIGroup>0</ActiveMDIGroup>
+ <MDIGroup>
+ <Size>100</Size>
+ <ActiveTab>0</ActiveTab>
+ <Doc>
+ <Name>Z:\home\jan\tmp\skola\BP\firmware\ident\st10f168.a66</Name>
+ <ColumnNumber>16</ColumnNumber>
+ <TopLine>2</TopLine>
+ <CurrentLine>5</CurrentLine>
+ <Folding>1</Folding>
+ <ContractedFolders></ContractedFolders>
+ <PaneID>0</PaneID>
+ </Doc>
+ </MDIGroup>
+ </MDIGroups>
+
+</ProjectGui>
diff --git a/firmware/st10f168/st10f168.uvopt b/firmware/st10f168/st10f168.uvopt
new file mode 100755
index 0000000..4b708ed
--- /dev/null
+++ b/firmware/st10f168/st10f168.uvopt
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
+ <Target>
+ <TargetName>Target 1</TargetName>
+ <ToolsetNumber>0x2</ToolsetNumber>
+ <ToolsetName>166/167</ToolsetName>
+ <TargetOption>
+ <MCS166>
+ <Clock>25000000</Clock>
+ <uocRom>1</uocRom>
+ <uocXCAN>1</uocXCAN>
+ <hadROM>1</hadROM>
+ <hadXRAM>1</hadXRAM>
+ <hadICAN>1</hadICAN>
+ <uocIROM2>0</uocIROM2>
+ <uocIROM3>0</uocIROM3>
+ <uocXRAM3>0</uocXRAM3>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ <ICAN>
+ <Type>0</Type>
+ <StartAddress>0xe800</StartAddress>
+ <Size>0x800</Size>
+ </ICAN>
+ <IROM>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x40000</Size>
+ </IROM>
+ <XRAM>
+ <Type>0</Type>
+ <StartAddress>0xd000</StartAddress>
+ <Size>0x1800</Size>
+ </XRAM>
+ <IRAM>
+ <Type>0</Type>
+ <StartAddress>0xf600</StartAddress>
+ <Size>0x800</Size>
+ </IRAM>
+ <IROM2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </IROM2>
+ <IROM3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </IROM3>
+ <XRAM3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </XRAM3>
+ </OnChipMemories>
+ </MCS166>
+ <OPTTT>
+ <gFlags>1</gFlags>
+ <BeepAtEnd>1</BeepAtEnd>
+ <RunSim>1</RunSim>
+ <RunTarget>0</RunTarget>
+ <RunAbUc>0</RunAbUc>
+ </OPTTT>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <FlashByte>65535</FlashByte>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ </OPTHX>
+ <OPTLEX>
+ <PageWidth>120</PageWidth>
+ <PageLength>65</PageLength>
+ <TabStop>8</TabStop>
+ <ListingPath>.\Listings\</ListingPath>
+ </OPTLEX>
+ <ListingPage>
+ <CreateCListing>1</CreateCListing>
+ <CreateAListing>1</CreateAListing>
+ <CreateLListing>1</CreateLListing>
+ <CreateIListing>0</CreateIListing>
+ <AsmCond>1</AsmCond>
+ <AsmSymb>1</AsmSymb>
+ <AsmXref>0</AsmXref>
+ <CCond>1</CCond>
+ <CCode>0</CCode>
+ <CListInc>0</CListInc>
+ <CSymb>0</CSymb>
+ <LinkerCodeListing>0</LinkerCodeListing>
+ </ListingPage>
+ <OPTXL>
+ <LMap>1</LMap>
+ <LComments>1</LComments>
+ <LGenerateSymbols>1</LGenerateSymbols>
+ <LLibSym>1</LLibSym>
+ <LLines>1</LLines>
+ <LLocSym>1</LLocSym>
+ <LPubSym>1</LPubSym>
+ <LXref>0</LXref>
+ <LExpSel>0</LExpSel>
+ </OPTXL>
+ <OPTFL>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <IsCurrentTarget>1</IsCurrentTarget>
+ </OPTFL>
+ <CpuCode>255</CpuCode>
+ <Books>
+ <Book>
+ <Number>0</Number>
+ <Title>Data Sheet</Title>
+ <Path>DATASHTS\ST\ST10F168_DS.PDF</Path>
+ </Book>
+ <Book>
+ <Number>1</Number>
+ <Title>Programming Manual</Title>
+ <Path>DATASHTS\ST\ST10_PM.PDF</Path>
+ </Book>
+ </Books>
+ <DebugOpt>
+ <uSim>1</uSim>
+ <uTrg>0</uTrg>
+ <sLdApp>1</sLdApp>
+ <sGomain>1</sGomain>
+ <sRbreak>1</sRbreak>
+ <sRwatch>1</sRwatch>
+ <sRmem>1</sRmem>
+ <sRfunc>1</sRfunc>
+ <sRbox>1</sRbox>
+ <tLdApp>1</tLdApp>
+ <tGomain>0</tGomain>
+ <tRbreak>1</tRbreak>
+ <tRwatch>1</tRwatch>
+ <tRmem>1</tRmem>
+ <tRfunc>0</tRfunc>
+ <tRbox>1</tRbox>
+ <tRtrace>1</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
+ <sRunDeb>0</sRunDeb>
+ <sLrtime>0</sLrtime>
+ <nTsel>-1</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
+ <pMon></pMon>
+ </DebugOpt>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
+ <DebugFlag>
+ <trace>0</trace>
+ <periodic>1</periodic>
+ <aLwin>0</aLwin>
+ <aCover>0</aCover>
+ <aSer1>0</aSer1>
+ <aSer2>0</aSer2>
+ <aPa>0</aPa>
+ <viewmode>0</viewmode>
+ <vrSel>0</vrSel>
+ <aSym>0</aSym>
+ <aTbox>0</aTbox>
+ <AscS1>0</AscS1>
+ <AscS2>0</AscS2>
+ <AscS3>0</AscS3>
+ <aSer3>0</aSer3>
+ <eProf>0</eProf>
+ <aLa>0</aLa>
+ <aPa1>0</aPa1>
+ <AscS4>0</AscS4>
+ <aSer4>0</aSer4>
+ <StkLoc>0</StkLoc>
+ <TrcWin>0</TrcWin>
+ <newCpu>0</newCpu>
+ <uProt>0</uProt>
+ </DebugFlag>
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ </TargetOption>
+ </Target>
+
+ <Group>
+ <GroupName>st10f168</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>1</tvExp>
+ <Focus>0</Focus>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>.\st10f168.a66</PathWithFileName>
+ <FilenameWithoutPath>st10f168.a66</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+</ProjectOpt>
diff --git a/firmware/st10f168/st10f168.uvproj b/firmware/st10f168/st10f168.uvproj
new file mode 100755
index 0000000..7516ae4
--- /dev/null
+++ b/firmware/st10f168/st10f168.uvproj
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
+
+ <SchemaVersion>1.1</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Targets>
+ <Target>
+ <TargetName>Target 1</TargetName>
+ <ToolsetNumber>0x2</ToolsetNumber>
+ <ToolsetName>166/167</ToolsetName>
+ <TargetOption>
+ <TargetCommonOption>
+ <Device>ST10F168</Device>
+ <Vendor>STMicroelectronics</Vendor>
+ <Cpu>IRAM (0xF600 - 0xFDFF) XRAM(0xD000-0xE7FF) IROM(0-0x3FFFF) ICAN(0xE800-0xEFFF) CLOCK(25000000) MOD167</Cpu>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile>"LIB\START167.A66" ("C16x/ST10 Startup Code")</StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId>3184</DeviceId>
+ <RegisterFile>REG168.H</RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile></SFDFile>
+ <bCustSvd>0</bCustSvd>
+ <UseEnv>0</UseEnv>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
+ <TargetStatus>
+ <Error>0</Error>
+ <ExitCodeStop>0</ExitCodeStop>
+ <ButtonStop>0</ButtonStop>
+ <NotGenerated>0</NotGenerated>
+ <InvalidFlash>1</InvalidFlash>
+ </TargetStatus>
+ <OutputDirectory>.\Objects\</OutputDirectory>
+ <OutputName>st10f168</OutputName>
+ <CreateExecutable>1</CreateExecutable>
+ <CreateLib>0</CreateLib>
+ <CreateHexFile>1</CreateHexFile>
+ <DebugInformation>1</DebugInformation>
+ <BrowseInformation>1</BrowseInformation>
+ <ListingPath>.\Listings\</ListingPath>
+ <HexFormatSelection>1</HexFormatSelection>
+ <Merge32K>0</Merge32K>
+ <CreateBatchFile>0</CreateBatchFile>
+ <BeforeCompile>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
+ </BeforeCompile>
+ <BeforeMake>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopB1X>0</nStopB1X>
+ <nStopB2X>0</nStopB2X>
+ </BeforeMake>
+ <AfterMake>
+ <RunUserProg1>1</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name>Z:\mnt\shared-ntfs\bin\win\hex2bin.exe Z:\mnt\shared-ntfs\sw\firmware\st10f168\Objects\st10f168.H86</UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>2</nStopA1X>
+ <nStopA2X>0</nStopA2X>
+ </AfterMake>
+ <SelectedForBatchBuild>0</SelectedForBatchBuild>
+ <SVCSIdString></SVCSIdString>
+ </TargetCommonOption>
+ <CommonProperty>
+ <UseCPPCompiler>0</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>0</AlwaysBuild>
+ <GenerateAssemblyFile>0</GenerateAssemblyFile>
+ <AssembleAssemblyFile>0</AssembleAssemblyFile>
+ <PublicsOnly>0</PublicsOnly>
+ <StopOnExitCode>3</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>1</ComprImg>
+ </CommonProperty>
+ <DllOption>
+ <SimDllName>S166.DLL</SimDllName>
+ <SimDllArguments></SimDllArguments>
+ <SimDlgDll>D167.DLL</SimDlgDll>
+ <SimDlgDllArguments>-p168</SimDlgDllArguments>
+ <TargetDllName>S166.DLL</TargetDllName>
+ <TargetDllArguments></TargetDllArguments>
+ <TargetDlgDll>T167.DLL</TargetDlgDll>
+ <TargetDlgDllArguments>-p168</TargetDlgDllArguments>
+ </DllOption>
+ <DebugOption>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ <Oh166RecLen>16</Oh166RecLen>
+ </OPTHX>
+ <Simulator>
+ <UseSimulator>1</UseSimulator>
+ <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+ <RunToMain>1</RunToMain>
+ <RestoreBreakpoints>1</RestoreBreakpoints>
+ <RestoreWatchpoints>1</RestoreWatchpoints>
+ <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+ <RestoreFunctions>1</RestoreFunctions>
+ <RestoreToolbox>1</RestoreToolbox>
+ <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
+ <RestoreSysVw>1</RestoreSysVw>
+ </Simulator>
+ <Target>
+ <UseTarget>0</UseTarget>
+ <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+ <RunToMain>0</RunToMain>
+ <RestoreBreakpoints>1</RestoreBreakpoints>
+ <RestoreWatchpoints>1</RestoreWatchpoints>
+ <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+ <RestoreFunctions>0</RestoreFunctions>
+ <RestoreToolbox>1</RestoreToolbox>
+ <RestoreTracepoints>1</RestoreTracepoints>
+ <RestoreSysVw>1</RestoreSysVw>
+ </Target>
+ <RunDebugAfterBuild>0</RunDebugAfterBuild>
+ <TargetSelection>-1</TargetSelection>
+ <SimDlls>
+ <CpuDll></CpuDll>
+ <CpuDllArguments></CpuDllArguments>
+ <PeripheralDll></PeripheralDll>
+ <PeripheralDllArguments></PeripheralDllArguments>
+ <InitializationFile></InitializationFile>
+ </SimDlls>
+ <TargetDlls>
+ <CpuDll></CpuDll>
+ <CpuDllArguments></CpuDllArguments>
+ <PeripheralDll></PeripheralDll>
+ <PeripheralDllArguments></PeripheralDllArguments>
+ <InitializationFile></InitializationFile>
+ <Driver></Driver>
+ </TargetDlls>
+ </DebugOption>
+ <Utilities>
+ <Flash1>
+ <UseTargetDll>0</UseTargetDll>
+ <UseExternalTool>0</UseExternalTool>
+ <RunIndependent>0</RunIndependent>
+ <UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
+ <Capability>0</Capability>
+ <DriverSelection>-1</DriverSelection>
+ </Flash1>
+ <bUseTDR>0</bUseTDR>
+ <Flash2></Flash2>
+ <Flash3></Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
+ <FcArmLst>0</FcArmLst>
+ </Utilities>
+ <Target166>
+ <Target166Misc>
+ <MemoryModel>1</MemoryModel>
+ <RTOS>0</RTOS>
+ <NearData>6</NearData>
+ <iData>65535</iData>
+ <sData>65535</sData>
+ <bData>65535</bData>
+ <Mod167>1</Mod167>
+ <ModV2>0</ModV2>
+ <UseOnChipRom>1</UseOnChipRom>
+ <UseOnChipXramCan>1</UseOnChipXramCan>
+ <UseOnChipXram2>0</UseOnChipXram2>
+ <NearRamMemory>0</NearRamMemory>
+ <NearRomMemory>0</NearRomMemory>
+ <UseIrom2>0</UseIrom2>
+ <UseIrom3>0</UseIrom3>
+ <UseXram3>0</UseXram3>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ </OnChipMemories>
+ </Target166Misc>
+ <C166>
+ <Optimize>6</Optimize>
+ <SpeedSize>1</SpeedSize>
+ <RegisterColoring>0</RegisterColoring>
+ <UseStaticMemory>0</UseStaticMemory>
+ <WarningLevel>2</WarningLevel>
+ <AliasChecking>1</AliasChecking>
+ <VariablesInOrder>0</VariablesInOrder>
+ <CharAsUnsignedChar>0</CharAsUnsignedChar>
+ <NoDppSave>1</NoDppSave>
+ <Float64>0</Float64>
+ <SaveTempVar>0</SaveTempVar>
+ <ReorderInstruction>0</ReorderInstruction>
+ <VariousControls>
+ <MiscControls>MOD167</MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </C166>
+ <Ec166>
+ <WarningLevel>2</WarningLevel>
+ <UnsignedChar>0</UnsignedChar>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </Ec166>
+ <A166>
+ <UseMPL>1</UseMPL>
+ <CaseSensitiveSymbols>0</CaseSensitiveSymbols>
+ <VariousControls>
+ <MiscControls>MOD167</MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath>..\..\firmware\include</IncludePath>
+ </VariousControls>
+ </A166>
+ <L166>
+ <UseLinkFile>0</UseLinkFile>
+ <LinkerCmdFile></LinkerCmdFile>
+ <LinkOnly>0</LinkOnly>
+ <UseTargetSet>1</UseTargetSet>
+ <DppUsage>0</DppUsage>
+ <nDataSelection>2</nDataSelection>
+ <nConstSelection>1</nConstSelection>
+ <NearDataString></NearDataString>
+ <NearConstString></NearConstString>
+ <iStartStopString></iStartStopString>
+ <InterruptVectorAddress></InterruptVectorAddress>
+ <WarningLevel>2</WarningLevel>
+ <DisableWarningNumbers></DisableWarningNumbers>
+ <Assign></Assign>
+ <Registerbank></Registerbank>
+ <Reserve></Reserve>
+ <MiscControls></MiscControls>
+ <UserClasses></UserClasses>
+ <UserSection></UserSection>
+ </L166>
+ </Target166>
+ </TargetOption>
+ <Groups>
+ <Group>
+ <GroupName>st10f168</GroupName>
+ <Files>
+ <File>
+ <FileName>st10f168.a66</FileName>
+ <FileType>2</FileType>
+ <FilePath>.\st10f168.a66</FilePath>
+ </File>
+ </Files>
+ </Group>
+ </Groups>
+ </Target>
+ </Targets>
+
+</Project>
diff --git a/firmware/st10f269/Objects/st10f269.SBR b/firmware/st10f269/Objects/st10f269.SBR
new file mode 100755
index 0000000..a85bcd0
--- /dev/null
+++ b/firmware/st10f269/Objects/st10f269.SBR
Binary files differ
diff --git a/firmware/st10f269/Objects/st10f269.bin b/firmware/st10f269/Objects/st10f269.bin
new file mode 100755
index 0000000..d9253d7
--- /dev/null
+++ b/firmware/st10f269/Objects/st10f269.bin
Binary files differ
diff --git a/firmware/st10f269/st10f269.a66 b/firmware/st10f269/st10f269.a66
new file mode 100755
index 0000000..6bd03d7
--- /dev/null
+++ b/firmware/st10f269/st10f269.a66
@@ -0,0 +1,422 @@
+$MOD167
+$SEGMENTED
+
+$INCLUDE (REG167.INC)
+$INCLUDE (COMMON.INC)
+
+NAME FIRMWARE_ST10F269
+ASSUME DPP3: SYSTEM
+
+
+FW_DATA SECTION DATA WORD AT FW2DATA
+ ; Control array of structures {segment, address, length in words} for read and write operations
+ FLASH_MAPPING:
+ DW 1,0000h,(16*1024)/2
+ DW 1,4000h,(8*1024)/2
+ DW 1,6000h,(8*1024)/2
+ DW 1,8000h,(32*1024)/2
+ DW 2,0000h,(64*1024)/2
+ DW 3,0000h,(64*1024)/2 ; Length is not needed
+ DW 4,0000h,(64*1024)/2 ; Length is not needed
+FW_DATA ENDS
+
+FW_ST10F269 SECTION CODE AT FW2BASE
+;-------------------------------------------------------------------------------
+; Main procedure
+;
+; Caka na slovo prikazu, odosle ho naspat pre potvrdenie a to iste musi znovu
+; prijat.
+;-------------------------------------------------------------------------------
+MAIN PROC
+ ; REMAP flash to segment 1 !!! Because of BUG.
+ BSET ROMS1
+ ; Default register bank
+ MOV CP,#REGBANK0
+ ; Zapneme serial buffer overrun detection
+ BSET S0CON.7
+ ; Init stack, size = 128 words, 256 bytes
+ MOV R0,SYSCON
+ AND R0,#3FFFh
+ OR R0,#2000h
+ MOV SYSCON,R0
+
+ MOV STKUN, #STACK_TOP
+ MOV STKOV, #STACK_BOTTOM
+ MOV SP, #STACK_TOP
+
+ NOP
+ NOP
+
+ MOV DPP0,#0
+ MOV DPP1,#1
+ MOV DPP2,#2
+ MOV DPP3,#3
+
+ ; Signalize successful initialization
+ MOV R15,#0
+ CALL SEND
+;-----------------------------------------------------------------------
+; Command loop
+;-----------------------------------------------------------------------
+$INCLUDE (SHELL.INC)
+
+MAIN ENDP
+
+;-------------------------------------------------------------------------------
+; Receive config information (1 word)
+;-------------------------------------------------------------------------------
+REC_CONFIG PROC NEAR
+ CALL REC_SAFE
+ RET
+REC_CONFIG ENDP
+
+;-------------------------------------------------------------------------------
+; Erase chip
+;-------------------------------------------------------------------------------
+ERASE_CHIP PROC NEAR
+ SCXT CP,#REGBANK1
+ ; Receive config information
+ CALL REC_CONFIG
+ CMP R14,#0
+ JMPR CC_NE,ERASE_CHIP_ERROR
+
+ MOV R0,#1554h
+ MOV R1,#2AA8h
+ MOV R2,#0A8h
+ MOV R3,#54h
+ MOV R4,#80h
+ MOV R5,#10h
+
+ ; Command cycles
+ EXTS #1,#3
+ MOV [R0],R2 ; [1554h], 0A80h
+ MOV [R1],R3 ; [2AA8h], 54h
+ MOV [R0],R4 ; [1554h], 80h
+ EXTS #1,#3
+ MOV [R0],R2 ; [1554h], 0A80h
+ MOV [R1],R3 ; [2AA8h], 54h
+ MOV [R0],R5 ; [1554h], 10h
+
+ NOP ; For BUG: Last command cycle
+ NOP
+
+ ; Pockame na dokoncenie zmazania chipu a detekujeme chyby
+ MOV R0,#1
+ MOV R1,#0000h
+ CALL OP_WAIT
+ MOV R15,R14
+ CALL SEND
+ERASE_CHIP_ERROR:
+ POP CP
+ RET
+ERASE_CHIP ENDP
+
+;-------------------------------------------------------------------------------
+; Erase blocks
+;-------------------------------------------------------------------------------
+ERASE_BLOCKS PROC NEAR
+ SCXT CP,#REGBANK1
+ ; Receive config information
+ CALL REC_CONFIG
+ CMP R14,#0
+ JMPR CC_NE,ERASE_BLOCKS_ERROR
+ ; Receive mask of blocks going to be erased
+ CALL REC_SAFE
+ ; Store mask
+ MOV R13,R15
+ ; Exit if there was an error
+ CMP R14,#0
+ JMPR CC_NE,ERASE_BLOCKS_ERROR
+
+ERASE_BLOCKS_START:
+ ; Base address of the control structure
+ MOV R11,#DPP3:FLASH_MAPPING
+
+ MOV R0,#1554h
+ MOV R1,#2AA8h
+ MOV R2,#0A8h
+ MOV R3,#54h
+ MOV R4,#80h
+
+ ; Command cycles
+ EXTS #1,#3
+ MOV [R0],R2 ; [1554h], 0A8h
+ MOV [R1],R3 ; [2AA8h], 54h
+ MOV [R0],R4 ; [1554h], 80h
+ EXTS #1,#2
+ MOV [R0],R2 ; [1554h], 0A8h
+ MOV [R1],R3 ; [2AA8h], 54h
+
+ MOV R2,#0 ; Block counter
+ ; V R13 mame masku
+
+ERASE_BLOCKS_LOOP:
+ MOV R0,[R11] ; Get segment, R0
+ ADD R11,#2
+ MOV R1,[R11] ; Get start address, R1
+ ADD R11,#4 ; Skip size
+
+ ROR R13,#1
+ JNB PSW.1,ERASE_BLOCKS_NEXT
+ ; Add command for given block
+ MOV R4,#30h
+ EXTS R0,#1
+ MOV [R1],R4
+ERASE_BLOCKS_NEXT:
+ CMPI1 R2,#5
+ JMPR CC_UGT,ERASE_BLOCKS_WAIT
+ JMP ERASE_BLOCKS_LOOP
+ERASE_BLOCKS_WAIT:
+ NOP ; For BUG: Last command cycle
+ NOP
+ ; Pockame na dokoncenie zmazania chipu a detekujeme chyby
+ ; V R0 a R1 mame segment a adresu platnu pre posledny mazany blok
+ CALL OP_WAIT
+ MOV R15,R14
+ CALL SEND
+ERASE_BLOCKS_ERROR:
+ POP CP
+ RET
+ERASE_BLOCKS ENDP
+
+;-------------------------------------------------------------------------------
+; Read
+;-------------------------------------------------------------------------------
+READ PROC NEAR
+ SCXT CP,#REGBANK1
+ ; Receive config information
+ CALL REC_CONFIG
+ CMP R14,#0
+ JMPR CC_NE,READ_ERROR
+ ; Prijmeme pocet bajtov pre precitanie
+ CALL REC_DWORD_SAFE
+ CMP R14,#0
+ JMPR CC_NE,READ_ERROR
+ ; Pocitadlo velkosti 1024 bajtoveho bloku
+ MOV R10,#1024
+ ; Base of the control table
+ MOV R11,#DPP3:FLASH_MAPPING
+ ; Read/Reset command
+ MOV R0,#0000h
+ MOV R1,#00F0h
+ EXTS #1,#1
+ MOV [R0],R1 ; zapiseme na lubovolnu adresu
+
+READ_START:
+ MOV R0,[R11] ; Get segment, R0
+ ADD R11,#2
+ MOV R1,[R11] ; Get start address, R1
+ ADD R11,#2
+ MOV R2,[R11] ; Get data length to read, R2
+ ADD R11,#2
+READ_LOOP:
+ ; Read word
+ EXTS R0,#1
+ MOV R15,[R1]
+ CALL SEND
+ CALL CHECK_COUNT
+ CMP R14,#1
+ JMPR CC_EQ,READ_DONE
+ ADD R1,#2 ; Set address of the next word
+ SUB R2,#1 ; Decrement word counter
+ JMPR CC_NZ,READ_LOOP
+ JMP READ_START
+
+READ_ERROR:
+READ_DONE:
+ POP CP
+ RET
+
+READ ENDP
+;-------------------------------------------------------------------------------
+; Write
+;-------------------------------------------------------------------------------
+WRITE PROC NEAR
+ SCXT CP,#REGBANK1
+ ; Receive config information
+ CALL REC_CONFIG
+ CMP R14,#0
+ JMPR CC_NE,WRITE_ERROR
+ ; Prijmeme pocet bajtov pre zapis
+ CALL REC_DWORD_SAFE
+ CMP R14,#0
+ JMPR CC_NE,WRITE_ERROR
+ ; Pocitadlo velkosti 1024 bajtoveho bloku
+ MOV R10,#1024
+ ; Base of the control table
+ MOV R11,#DPP3:FLASH_MAPPING
+WRITE_START:
+ MOV R0,[R11] ; Get segment, R0
+ ADD R11,#2
+ MOV R1,[R11] ; Get start address, R1
+ ADD R11,#2
+ MOV R3,[R11] ; Get data length to write, R3
+ ADD R11,#2
+WRITE_LOOP:
+ CALL REC
+ CMP R14,#0
+ JMPR CC_NE,WRITE_SEND_ERROR
+ ; Write word in R15 to the FLASH
+ MOV R5,#1554h
+ MOV R6,#2AA8h
+ MOV R2,#0A8h
+ MOV R12,#54h
+ MOV R9,#0A0h
+ ; Command cycles
+ EXTS #1,#3
+ MOV [R5],R2 ; [1554h], 0A8h
+ MOV [R6],R12 ; [2AA8h], 54h
+ MOV [R5],R9 ; [1554h], 0A0h
+ ; 4. cyklus - zapiseme data na cielovu adresu
+ EXTS R0,#1
+ MOV [R1],R15
+
+ NOP ; For BUG: Last command cycle
+ NOP
+ ; Pockame na dokoncenie zmazania chipu a detekujeme chyby
+ ; V R0 a R1 mame segment a adresu platnu pre posledny mazany blok
+ ; V R2 mame zapisovane slovo
+ MOV R2,R15
+ CALL OP_WAIT
+ CMP R14,#0
+ JMPR CC_NE,WRITE_SEND_ERROR
+ ; End of Write word
+ CALL CHECK_COUNT
+ CMP R14,#1
+ JMPR CC_EQ,WRITE_DONE
+ ADD R1,#2
+ SUB R3,#1
+ JMPR CC_NZ,WRITE_LOOP
+ JMP WRITE_START
+
+WRITE_SEND_ERROR:
+ MOV R15,R14
+ CALL SEND
+WRITE_ERROR:
+WRITE_DONE:
+ POP CP
+ RET
+
+WRITE ENDP
+
+;-------------------------------------------------------------------------------
+; Helper subroutines
+;-------------------------------------------------------------------------------
+$INCLUDE (SUBROUTINES.INC)
+
+;OP_WAIT_ERASE PROC NEAR
+
+ ;; Vstup: R0 segment, R1 adresa
+ ;; Vystup: R14 navratovy kod
+ ;PUSH R0
+ ;PUSH R1
+ ;PUSH R2
+ ;PUSH R3
+ ;PUSH R4
+ ;MOV R14,#0 ; Defaultny navratovy kod
+;OP_WAIT_ERASE_LOOP:
+ ;EXTS R0,#1
+ ;MOV R3,[R1]
+ ;MOV R4,R3 ; Make a copy for error bit checking
+ ;; Is operation complete?
+ ;EXTS R0,#1
+ ;MOV R3,[R1]
+ ;XOR R3,R4
+ ;JNB R3.6,OP_WAIT_ERASE_RETURN
+ ;; Has error occured?
+ ;JB R4.5,OP_WAIT_ERASE_ERROR
+ ;JMP OP_WAIT_ERASE_LOOP
+;OP_WAIT_ERASE_ERROR:
+ ;; Error, run Read/Reset command, this also resets the error bit .5
+ ;MOV R14,#RET_ERASE_ERROR
+ ;MOV R2,#0F0h
+ ;EXTS R0,#1
+ ;MOV [R1],R2
+;OP_WAIT_ERASE_RETURN:
+ ;POP R4
+ ;POP R3
+ ;POP R2
+ ;POP R1
+ ;POP R0
+ ;RET
+;OP_WAIT_ERASE ENDP
+
+OP_WAIT PROC NEAR
+ ; Vstup: R0 segment, R1 adresa, R2 bit 7 (hodnota, ktora znaci ukoncenie operacie)
+ ; Vystup: R14 navratovy kod
+ PUSH R0
+ PUSH R1
+ PUSH R2
+ PUSH R3
+ PUSH R4
+ MOV R14,#0 ; Defaultny navratovy kod
+OP_WAIT_LOOP:
+ EXTS R0,#1
+ MOV R3,[R1]
+ MOV R4,R3 ; Make a copy for error bit checking
+ ; Is operation complete?
+ EXTS R0,#1
+ MOV R3,[R1]
+ XOR R3,R4
+ JNB R3.6,OP_WAIT_RETURN
+ ; Has error occured?
+ JB R4.5,OP_WAIT_ERROR
+ JMP OP_WAIT_LOOP
+OP_WAIT_ERROR:
+ ; Error, run Read/Reset command, this also resets the error bit .5
+ MOV R14,#RET_WRITE_ERROR
+ MOV R2,#0F0h
+ EXTS R0,#1
+ MOV [R1],R2
+OP_WAIT_RETURN:
+ POP R4
+ POP R3
+ POP R2
+ POP R1
+ POP R0
+ RET
+OP_WAIT ENDP
+;---------------
+
+
+;OP_DP_WAIT PROC NEAR
+ ;; Vstup: R0 segment, R1 adresa, R2 bit 7 (hodnota, ktora znaci ukoncenie operacie)
+ ;; Vystup: R14 navratovy kod
+ ;PUSH R0
+ ;PUSH R1
+ ;PUSH R2
+ ;PUSH R3
+ ;PUSH R4
+ ;MOV R2,#0FFh
+ ;MOV R14,#0 ; Defaultny navratovy kod
+;OP_DP_WAIT_LOOP:
+ ;EXTS R0,#1
+ ;MOV R3,[R1]
+ ;MOV R4,R3 ; Make a copy for error bit checking
+ ;; Is operation complete?
+ ;XOR R3,R2
+ ;JNB R3.7,OP_DP_WAIT_RETURN
+ ;; Has error occured?
+ ;JB R4.5,OP_DP_WAIT_ERROR
+ ;JMP OP_DP_WAIT_LOOP
+;OP_DP_WAIT_ERROR:
+ ;; Error, run Read/Reset command, this also resets the error bit .5
+ ;MOV R14,#RET_WRITE_ERROR
+ ;MOV R2,#0F0h
+ ;EXTS R0,#1
+ ;MOV [R1],R2
+;OP_DP_WAIT_RETURN:
+ ;POP R4
+ ;POP R3
+ ;POP R2
+ ;POP R1
+ ;POP R0
+ ;RET
+;OP_DP_WAIT ENDP
+;-------------------------------------------------------------------------------
+; End of helper subroutines
+;-------------------------------------------------------------------------------
+
+FW_ST10F269 ENDS
+
+END \ No newline at end of file
diff --git a/firmware/st10f269/st10f269.uvgui.jan b/firmware/st10f269/st10f269.uvgui.jan
new file mode 100755
index 0000000..727bfc8
--- /dev/null
+++ b/firmware/st10f269/st10f269.uvgui.jan
@@ -0,0 +1,1360 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectGui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_gui.xsd">
+
+ <SchemaVersion>-5.1</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <ViewPool/>
+
+ <SECTreeCtrl>
+ <View>
+ <WinId>38003</WinId>
+ <ViewName>Registers</ViewName>
+ <TableColWidths>115 184</TableColWidths>
+ </View>
+ <View>
+ <WinId>346</WinId>
+ <ViewName>Code Coverage</ViewName>
+ <TableColWidths>442 160</TableColWidths>
+ </View>
+ <View>
+ <WinId>204</WinId>
+ <ViewName>Performance Analyzer</ViewName>
+ <TableColWidths>602</TableColWidths>
+ </View>
+ </SECTreeCtrl>
+
+ <TreeListPane>
+ <View>
+ <WinId>1506</WinId>
+ <ViewName>Symbols</ViewName>
+ <UserString></UserString>
+ <TableColWidths>133 133 133</TableColWidths>
+ </View>
+ <View>
+ <WinId>1936</WinId>
+ <ViewName>Watch 1</ViewName>
+ <UserString></UserString>
+ <TableColWidths>133 133 133</TableColWidths>
+ </View>
+ <View>
+ <WinId>1937</WinId>
+ <ViewName>Watch 2</ViewName>
+ <UserString></UserString>
+ <TableColWidths>133 133 133</TableColWidths>
+ </View>
+ <View>
+ <WinId>1935</WinId>
+ <ViewName>Call Stack + Locals</ViewName>
+ <UserString></UserString>
+ <TableColWidths>133 133 133</TableColWidths>
+ </View>
+ <View>
+ <WinId>2506</WinId>
+ <ViewName>Trace Data</ViewName>
+ <UserString></UserString>
+ <TableColWidths>75 135 130 95 70 230 200 150</TableColWidths>
+ </View>
+ </TreeListPane>
+
+ <WindowSettings>
+ <LogicAnalizer>
+ <ShowLACursor>1</ShowLACursor>
+ <ShowSignalInfo>1</ShowSignalInfo>
+ <ShowCycles>0</ShowCycles>
+ <LeftSideBarSize>0</LeftSideBarSize>
+ <TimeBaseIndex>-1</TimeBaseIndex>
+ </LogicAnalizer>
+ </WindowSettings>
+
+ <WinLayoutEx>
+ <sActiveDebugView></sActiveDebugView>
+ <WindowPosition>
+ <length>44</length>
+ <flags>0</flags>
+ <showCmd>3</showCmd>
+ <MinPosition>
+ <xPos>-1</xPos>
+ <yPos>-1</yPos>
+ </MinPosition>
+ <MaxPosition>
+ <xPos>-1684</xPos>
+ <yPos>-4</yPos>
+ </MaxPosition>
+ <NormalPosition>
+ <Top>89</Top>
+ <Left>-1243</Left>
+ <Right>-322</Right>
+ <Bottom>869</Bottom>
+ </NormalPosition>
+ </WindowPosition>
+ <MDIClientArea>
+ <RegID>0</RegID>
+ <MDITabState>
+ <Len>381</Len>
+ <Data>010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000001000000020000000000000001000000495A3A5C686F6D655C6A616E5C746D705C736B6F6C615C42505C746578745C5553425F464C4153485C7372635C696D706C5C6669726D776172655C6964656E745C6964656E742E61363600000000096964656E742E61363600000000BECEA100FFFFFFFF4F5A3A5C686F6D655C6A616E5C746D705C736B6F6C615C42505C746578745C5553425F464C4153485C7372635C696D706C5C6669726D776172655C73743130663236395C73743130663236392E613636000000000C73743130663236392E61363600000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000A9FAFFFF5E00000000000000E8030000</Data>
+ </MDITabState>
+ </MDIClientArea>
+ <ViewEx>
+ <ViewType>0</ViewType>
+ <ViewName>Build</ViewName>
+ <Window>
+ <RegID>-1</RegID>
+ <PaneID>-1</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>940100004B000000F8030000B4000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>79FDFFFFE4000000DDFFFFFF4D010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1005</RegID>
+ <PaneID>1005</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000065000000ED010000F6010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>109</RegID>
+ <PaneID>109</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000065000000ED010000F6010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1465</RegID>
+ <PaneID>1465</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1466</RegID>
+ <PaneID>1466</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1467</RegID>
+ <PaneID>1467</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1468</RegID>
+ <PaneID>1468</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1506</RegID>
+ <PaneID>1506</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1913</RegID>
+ <PaneID>1913</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1935</RegID>
+ <PaneID>1935</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1936</RegID>
+ <PaneID>1936</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1937</RegID>
+ <PaneID>1937</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1939</RegID>
+ <PaneID>1939</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1940</RegID>
+ <PaneID>1940</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1941</RegID>
+ <PaneID>1941</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1942</RegID>
+ <PaneID>1942</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>195</RegID>
+ <PaneID>195</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000065000000ED010000F6010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>196</RegID>
+ <PaneID>196</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000065000000ED010000F6010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>197</RegID>
+ <PaneID>197</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>000000002A020000F0010000D5030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>70F9FFFF1802000000000000C3020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>198</RegID>
+ <PaneID>198</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>000000007A010000F8030000FA010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>199</RegID>
+ <PaneID>199</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>030000002D020000BF00000040030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>70F9FFFF1802000000000000C3020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>203</RegID>
+ <PaneID>203</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>204</RegID>
+ <PaneID>204</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>221</RegID>
+ <PaneID>221</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000000000000000000000000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>2506</RegID>
+ <PaneID>2506</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>2507</RegID>
+ <PaneID>2507</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>343</RegID>
+ <PaneID>343</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>346</RegID>
+ <PaneID>346</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35824</RegID>
+ <PaneID>35824</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35885</RegID>
+ <PaneID>35885</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35886</RegID>
+ <PaneID>35886</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35887</RegID>
+ <PaneID>35887</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35888</RegID>
+ <PaneID>35888</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35889</RegID>
+ <PaneID>35889</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35890</RegID>
+ <PaneID>35890</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35891</RegID>
+ <PaneID>35891</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35892</RegID>
+ <PaneID>35892</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35893</RegID>
+ <PaneID>35893</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35894</RegID>
+ <PaneID>35894</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35895</RegID>
+ <PaneID>35895</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35896</RegID>
+ <PaneID>35896</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35897</RegID>
+ <PaneID>35897</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35898</RegID>
+ <PaneID>35898</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35899</RegID>
+ <PaneID>35899</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35900</RegID>
+ <PaneID>35900</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35901</RegID>
+ <PaneID>35901</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35902</RegID>
+ <PaneID>35902</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35903</RegID>
+ <PaneID>35903</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35904</RegID>
+ <PaneID>35904</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35905</RegID>
+ <PaneID>35905</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>38003</RegID>
+ <PaneID>38003</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000065000000BF0000007B010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>38007</RegID>
+ <PaneID>38007</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>030000002D020000BF00000040030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>70F9FFFF1802000000000000C3020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>436</RegID>
+ <PaneID>436</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>030000002D020000BF00000040030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>70F9FFFF1802000000000000C3020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>437</RegID>
+ <PaneID>437</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>440</RegID>
+ <PaneID>440</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59392</RegID>
+ <PaneID>59392</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>882</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000000000007D0300001A000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59393</RegID>
+ <PaneID>0</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000D503000090060000E8030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59399</RegID>
+ <PaneID>59399</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>439</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>1</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>000000001A000000C201000034000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59400</RegID>
+ <PaneID>59400</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>572</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>2</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0000000034000000470200004E000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <DockMan>
+ <Len>2611</Len>
+ <Data>000000000A000000000000000020000000000000FFFFFFFFFFFFFFFF94010000B4000000F8030000B8000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E65002000000000000079FDFFFFE4000000DDFFFFFF4D010000940100004B000000F8030000B40000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF640200004B000000680200008D010000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C0000018000400000000000004DFEFFFFE4000000DDFFFFFF26020000680200004B000000F80300008D0100000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00100004B000000F4010000D50300000100000002000010040000000100000040FFFFFFC505000000000000000000000000000001000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000E5FBFFFFE4000000A7FCFFFF2D020000000000004B000000F00100000F0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFF04000000C5000000C7000000B40100007794000001800010000001000000E5FBFFFF31020000A7FCFFFF770300000000000013020000F0010000D50300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF000000000000000002000000000000000100000002000000FFFFFFFF000000000F020000F00100001302000001000000010000100400000000000000CCFDFFFF4E01000000000000000000000000000002000000FFFFFFFFED030000FFFFFFFFC500000001000000FFFFFFFFC500000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000076010000F80300007A01000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000E5FBFFFF13020000DDFFFFFF93020000000000007A010000F8030000FA01000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFFC0100007A01000000020000FA01000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000000000000000000</Data>
+ </DockMan>
+ <ToolBar>
+ <RegID>59392</RegID>
+ <Name>File</Name>
+ <Buttons>
+ <Len>2030</Len>
+ <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000025235960000000000000003000252350370726506304646383448000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>1423</Len>
+ <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>1423</Len>
+ <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ToolBar>
+ <RegID>59399</RegID>
+ <Name>Build</Name>
+ <Buttons>
+ <Len>678</Len>
+ <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000004002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000004005000000000000000000000000000000000010000000100000000000000054275696C64B7010000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>583</Len>
+ <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>583</Len>
+ <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ToolBar>
+ <RegID>59400</RegID>
+ <Name>Debug</Name>
+ <Buttons>
+ <Len>2220</Len>
+ <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F7200000000000000000100000000000000010000000000000000000000010000000000000000000544656275673C020000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>898</Len>
+ <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>898</Len>
+ <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ControlBarsSummary>
+ <Bars>0</Bars>
+ <ScreenCX>1366</ScreenCX>
+ <ScreenCY>768</ScreenCY>
+ </ControlBarsSummary>
+ </ViewEx>
+ </WinLayoutEx>
+
+ <MDIGroups>
+ <Orientation>1</Orientation>
+ <ActiveMDIGroup>0</ActiveMDIGroup>
+ <MDIGroup>
+ <Size>100</Size>
+ <ActiveTab>0</ActiveTab>
+ <Doc>
+ <Name>Z:\home\jan\tmp\skola\BP\firmware\ident\st10f269.a66</Name>
+ <ColumnNumber>22</ColumnNumber>
+ <TopLine>1</TopLine>
+ <CurrentLine>7</CurrentLine>
+ <Folding>1</Folding>
+ <ContractedFolders></ContractedFolders>
+ <PaneID>0</PaneID>
+ </Doc>
+ </MDIGroup>
+ </MDIGroups>
+
+</ProjectGui>
diff --git a/firmware/st10f269/st10f269.uvopt b/firmware/st10f269/st10f269.uvopt
new file mode 100755
index 0000000..a2d9a9e
--- /dev/null
+++ b/firmware/st10f269/st10f269.uvopt
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
+ <Target>
+ <TargetName>Target 1</TargetName>
+ <ToolsetNumber>0x2</ToolsetNumber>
+ <ToolsetName>166/167</ToolsetName>
+ <TargetOption>
+ <MCS166>
+ <Clock>40000000</Clock>
+ <uocRom>1</uocRom>
+ <uocXCAN>1</uocXCAN>
+ <hadROM>1</hadROM>
+ <hadXRAM>1</hadXRAM>
+ <hadICAN>1</hadICAN>
+ <uocIROM2>0</uocIROM2>
+ <uocIROM3>0</uocIROM3>
+ <uocXRAM3>0</uocXRAM3>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ <ICAN>
+ <Type>0</Type>
+ <StartAddress>0xe800</StartAddress>
+ <Size>0x800</Size>
+ </ICAN>
+ <IROM>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x40000</Size>
+ </IROM>
+ <XRAM>
+ <Type>0</Type>
+ <StartAddress>0xc000</StartAddress>
+ <Size>0x2000</Size>
+ </XRAM>
+ <IRAM>
+ <Type>0</Type>
+ <StartAddress>0xf600</StartAddress>
+ <Size>0x800</Size>
+ </IRAM>
+ <IROM2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </IROM2>
+ <IROM3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </IROM3>
+ <XRAM3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </XRAM3>
+ </OnChipMemories>
+ </MCS166>
+ <OPTTT>
+ <gFlags>1</gFlags>
+ <BeepAtEnd>1</BeepAtEnd>
+ <RunSim>1</RunSim>
+ <RunTarget>0</RunTarget>
+ <RunAbUc>0</RunAbUc>
+ </OPTTT>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <FlashByte>65535</FlashByte>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ </OPTHX>
+ <OPTLEX>
+ <PageWidth>120</PageWidth>
+ <PageLength>65</PageLength>
+ <TabStop>8</TabStop>
+ <ListingPath>.\Listings\</ListingPath>
+ </OPTLEX>
+ <ListingPage>
+ <CreateCListing>1</CreateCListing>
+ <CreateAListing>1</CreateAListing>
+ <CreateLListing>1</CreateLListing>
+ <CreateIListing>0</CreateIListing>
+ <AsmCond>1</AsmCond>
+ <AsmSymb>1</AsmSymb>
+ <AsmXref>0</AsmXref>
+ <CCond>1</CCond>
+ <CCode>0</CCode>
+ <CListInc>0</CListInc>
+ <CSymb>0</CSymb>
+ <LinkerCodeListing>0</LinkerCodeListing>
+ </ListingPage>
+ <OPTXL>
+ <LMap>1</LMap>
+ <LComments>1</LComments>
+ <LGenerateSymbols>1</LGenerateSymbols>
+ <LLibSym>1</LLibSym>
+ <LLines>1</LLines>
+ <LLocSym>1</LLocSym>
+ <LPubSym>1</LPubSym>
+ <LXref>0</LXref>
+ <LExpSel>0</LExpSel>
+ </OPTXL>
+ <OPTFL>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <IsCurrentTarget>1</IsCurrentTarget>
+ </OPTFL>
+ <CpuCode>255</CpuCode>
+ <Books>
+ <Book>
+ <Number>0</Number>
+ <Title>Data Sheet</Title>
+ <Path>DATASHTS\ST\ST10F269_DS.PDF</Path>
+ </Book>
+ <Book>
+ <Number>1</Number>
+ <Title>Programming Manual</Title>
+ <Path>DATASHTS\ST\ST10_PM.PDF</Path>
+ </Book>
+ </Books>
+ <DebugOpt>
+ <uSim>1</uSim>
+ <uTrg>0</uTrg>
+ <sLdApp>1</sLdApp>
+ <sGomain>1</sGomain>
+ <sRbreak>1</sRbreak>
+ <sRwatch>1</sRwatch>
+ <sRmem>1</sRmem>
+ <sRfunc>1</sRfunc>
+ <sRbox>1</sRbox>
+ <tLdApp>1</tLdApp>
+ <tGomain>0</tGomain>
+ <tRbreak>1</tRbreak>
+ <tRwatch>1</tRwatch>
+ <tRmem>1</tRmem>
+ <tRfunc>0</tRfunc>
+ <tRbox>1</tRbox>
+ <tRtrace>1</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
+ <sRunDeb>0</sRunDeb>
+ <sLrtime>0</sLrtime>
+ <nTsel>-1</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
+ <pMon></pMon>
+ </DebugOpt>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
+ <DebugFlag>
+ <trace>0</trace>
+ <periodic>1</periodic>
+ <aLwin>0</aLwin>
+ <aCover>0</aCover>
+ <aSer1>0</aSer1>
+ <aSer2>0</aSer2>
+ <aPa>0</aPa>
+ <viewmode>0</viewmode>
+ <vrSel>0</vrSel>
+ <aSym>0</aSym>
+ <aTbox>0</aTbox>
+ <AscS1>0</AscS1>
+ <AscS2>0</AscS2>
+ <AscS3>0</AscS3>
+ <aSer3>0</aSer3>
+ <eProf>0</eProf>
+ <aLa>0</aLa>
+ <aPa1>0</aPa1>
+ <AscS4>0</AscS4>
+ <aSer4>0</aSer4>
+ <StkLoc>0</StkLoc>
+ <TrcWin>0</TrcWin>
+ <newCpu>0</newCpu>
+ <uProt>0</uProt>
+ </DebugFlag>
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ </TargetOption>
+ </Target>
+
+ <Group>
+ <GroupName>st10f269</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>1</tvExp>
+ <Focus>0</Focus>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>.\st10f269.a66</PathWithFileName>
+ <FilenameWithoutPath>st10f269.a66</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+</ProjectOpt>
diff --git a/firmware/st10f269/st10f269.uvproj b/firmware/st10f269/st10f269.uvproj
new file mode 100755
index 0000000..3d2e222
--- /dev/null
+++ b/firmware/st10f269/st10f269.uvproj
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
+
+ <SchemaVersion>1.1</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Targets>
+ <Target>
+ <TargetName>Target 1</TargetName>
+ <ToolsetNumber>0x2</ToolsetNumber>
+ <ToolsetName>166/167</ToolsetName>
+ <TargetOption>
+ <TargetCommonOption>
+ <Device>ST10F269</Device>
+ <Vendor>STMicroelectronics</Vendor>
+ <Cpu>IRAM (0xF600 - 0xFDFF) XRAM (0xC000-0xDFFF) XRAM2(0xE000-0xE7FF) IROM(0-0x3FFFF) ICAN(0xE800-0xEFFF) CLOCK(40000000) MOD167</Cpu>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile>"LIB\START167.A66" ("C16x/ST10 Startup Code")</StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId>3236</DeviceId>
+ <RegisterFile>REGST10F269.H</RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile></SFDFile>
+ <bCustSvd>0</bCustSvd>
+ <UseEnv>0</UseEnv>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
+ <TargetStatus>
+ <Error>0</Error>
+ <ExitCodeStop>0</ExitCodeStop>
+ <ButtonStop>0</ButtonStop>
+ <NotGenerated>0</NotGenerated>
+ <InvalidFlash>1</InvalidFlash>
+ </TargetStatus>
+ <OutputDirectory>.\Objects\</OutputDirectory>
+ <OutputName>st10f269</OutputName>
+ <CreateExecutable>1</CreateExecutable>
+ <CreateLib>0</CreateLib>
+ <CreateHexFile>1</CreateHexFile>
+ <DebugInformation>1</DebugInformation>
+ <BrowseInformation>1</BrowseInformation>
+ <ListingPath>.\Listings\</ListingPath>
+ <HexFormatSelection>1</HexFormatSelection>
+ <Merge32K>0</Merge32K>
+ <CreateBatchFile>0</CreateBatchFile>
+ <BeforeCompile>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
+ </BeforeCompile>
+ <BeforeMake>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopB1X>0</nStopB1X>
+ <nStopB2X>0</nStopB2X>
+ </BeforeMake>
+ <AfterMake>
+ <RunUserProg1>1</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name>Z:\mnt\shared-ntfs\bin\win\hex2bin.exe Z:\mnt\shared-ntfs\sw\firmware\st10f269\Objects\st10f269.H86</UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>2</nStopA1X>
+ <nStopA2X>0</nStopA2X>
+ </AfterMake>
+ <SelectedForBatchBuild>0</SelectedForBatchBuild>
+ <SVCSIdString></SVCSIdString>
+ </TargetCommonOption>
+ <CommonProperty>
+ <UseCPPCompiler>0</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>0</AlwaysBuild>
+ <GenerateAssemblyFile>0</GenerateAssemblyFile>
+ <AssembleAssemblyFile>0</AssembleAssemblyFile>
+ <PublicsOnly>0</PublicsOnly>
+ <StopOnExitCode>3</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>1</ComprImg>
+ </CommonProperty>
+ <DllOption>
+ <SimDllName>S166.DLL</SimDllName>
+ <SimDllArguments>-cEXTMAC</SimDllArguments>
+ <SimDlgDll>D167.DLL</SimDlgDll>
+ <SimDlgDllArguments>-p269</SimDlgDllArguments>
+ <TargetDllName>S166.DLL</TargetDllName>
+ <TargetDllArguments>-cEXTMAC</TargetDllArguments>
+ <TargetDlgDll>T167.DLL</TargetDlgDll>
+ <TargetDlgDllArguments>-p269</TargetDlgDllArguments>
+ </DllOption>
+ <DebugOption>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ <Oh166RecLen>16</Oh166RecLen>
+ </OPTHX>
+ <Simulator>
+ <UseSimulator>1</UseSimulator>
+ <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+ <RunToMain>1</RunToMain>
+ <RestoreBreakpoints>1</RestoreBreakpoints>
+ <RestoreWatchpoints>1</RestoreWatchpoints>
+ <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+ <RestoreFunctions>1</RestoreFunctions>
+ <RestoreToolbox>1</RestoreToolbox>
+ <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
+ <RestoreSysVw>1</RestoreSysVw>
+ </Simulator>
+ <Target>
+ <UseTarget>0</UseTarget>
+ <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+ <RunToMain>0</RunToMain>
+ <RestoreBreakpoints>1</RestoreBreakpoints>
+ <RestoreWatchpoints>1</RestoreWatchpoints>
+ <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+ <RestoreFunctions>0</RestoreFunctions>
+ <RestoreToolbox>1</RestoreToolbox>
+ <RestoreTracepoints>1</RestoreTracepoints>
+ <RestoreSysVw>1</RestoreSysVw>
+ </Target>
+ <RunDebugAfterBuild>0</RunDebugAfterBuild>
+ <TargetSelection>-1</TargetSelection>
+ <SimDlls>
+ <CpuDll></CpuDll>
+ <CpuDllArguments></CpuDllArguments>
+ <PeripheralDll></PeripheralDll>
+ <PeripheralDllArguments></PeripheralDllArguments>
+ <InitializationFile></InitializationFile>
+ </SimDlls>
+ <TargetDlls>
+ <CpuDll></CpuDll>
+ <CpuDllArguments></CpuDllArguments>
+ <PeripheralDll></PeripheralDll>
+ <PeripheralDllArguments></PeripheralDllArguments>
+ <InitializationFile></InitializationFile>
+ <Driver></Driver>
+ </TargetDlls>
+ </DebugOption>
+ <Utilities>
+ <Flash1>
+ <UseTargetDll>0</UseTargetDll>
+ <UseExternalTool>0</UseExternalTool>
+ <RunIndependent>0</RunIndependent>
+ <UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
+ <Capability>0</Capability>
+ <DriverSelection>-1</DriverSelection>
+ </Flash1>
+ <bUseTDR>0</bUseTDR>
+ <Flash2></Flash2>
+ <Flash3></Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
+ <FcArmLst>0</FcArmLst>
+ </Utilities>
+ <Target166>
+ <Target166Misc>
+ <MemoryModel>1</MemoryModel>
+ <RTOS>0</RTOS>
+ <NearData>6</NearData>
+ <iData>65535</iData>
+ <sData>65535</sData>
+ <bData>65535</bData>
+ <Mod167>1</Mod167>
+ <ModV2>0</ModV2>
+ <UseOnChipRom>1</UseOnChipRom>
+ <UseOnChipXramCan>1</UseOnChipXramCan>
+ <UseOnChipXram2>1</UseOnChipXram2>
+ <NearRamMemory>0</NearRamMemory>
+ <NearRomMemory>0</NearRomMemory>
+ <UseIrom2>0</UseIrom2>
+ <UseIrom3>0</UseIrom3>
+ <UseXram3>0</UseXram3>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ </OnChipMemories>
+ </Target166Misc>
+ <C166>
+ <Optimize>6</Optimize>
+ <SpeedSize>1</SpeedSize>
+ <RegisterColoring>0</RegisterColoring>
+ <UseStaticMemory>0</UseStaticMemory>
+ <WarningLevel>2</WarningLevel>
+ <AliasChecking>1</AliasChecking>
+ <VariablesInOrder>0</VariablesInOrder>
+ <CharAsUnsignedChar>0</CharAsUnsignedChar>
+ <NoDppSave>1</NoDppSave>
+ <Float64>0</Float64>
+ <SaveTempVar>0</SaveTempVar>
+ <ReorderInstruction>0</ReorderInstruction>
+ <VariousControls>
+ <MiscControls>MOD167</MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </C166>
+ <Ec166>
+ <WarningLevel>2</WarningLevel>
+ <UnsignedChar>0</UnsignedChar>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </Ec166>
+ <A166>
+ <UseMPL>1</UseMPL>
+ <CaseSensitiveSymbols>0</CaseSensitiveSymbols>
+ <VariousControls>
+ <MiscControls>MOD167</MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath>..\..\firmware\include</IncludePath>
+ </VariousControls>
+ </A166>
+ <L166>
+ <UseLinkFile>0</UseLinkFile>
+ <LinkerCmdFile></LinkerCmdFile>
+ <LinkOnly>0</LinkOnly>
+ <UseTargetSet>1</UseTargetSet>
+ <DppUsage>0</DppUsage>
+ <nDataSelection>2</nDataSelection>
+ <nConstSelection>1</nConstSelection>
+ <NearDataString></NearDataString>
+ <NearConstString></NearConstString>
+ <iStartStopString></iStartStopString>
+ <InterruptVectorAddress></InterruptVectorAddress>
+ <WarningLevel>2</WarningLevel>
+ <DisableWarningNumbers></DisableWarningNumbers>
+ <Assign></Assign>
+ <Registerbank></Registerbank>
+ <Reserve></Reserve>
+ <MiscControls></MiscControls>
+ <UserClasses></UserClasses>
+ <UserSection></UserSection>
+ </L166>
+ </Target166>
+ </TargetOption>
+ <Groups>
+ <Group>
+ <GroupName>st10f269</GroupName>
+ <Files>
+ <File>
+ <FileName>st10f269.a66</FileName>
+ <FileType>2</FileType>
+ <FilePath>.\st10f269.a66</FilePath>
+ </File>
+ </Files>
+ </Group>
+ </Groups>
+ </Target>
+ </Targets>
+
+</Project>
diff --git a/firmware/stage_1/Objects/stage_1.SBR b/firmware/stage_1/Objects/stage_1.SBR
new file mode 100755
index 0000000..9c773c8
--- /dev/null
+++ b/firmware/stage_1/Objects/stage_1.SBR
Binary files differ
diff --git a/firmware/stage_1/Objects/stage_1.bin b/firmware/stage_1/Objects/stage_1.bin
new file mode 100755
index 0000000..817c262
--- /dev/null
+++ b/firmware/stage_1/Objects/stage_1.bin
Binary files differ
diff --git a/firmware/stage_1/stage_1.a66 b/firmware/stage_1/stage_1.a66
new file mode 100755
index 0000000..f1b4b60
--- /dev/null
+++ b/firmware/stage_1/stage_1.a66
@@ -0,0 +1,43 @@
+$MOD167
+$SEGMENTED
+
+$INCLUDE (REG167.INC)
+$INCLUDE (COMMON.INC)
+
+NAME FIRMWARE_STAGE_1
+ASSUME DPP3: SYSTEM
+
+; Firmware prvej urovne - First stage firmware
+;
+; Musi mat 32 bajtov. Nahra do IRAM kod, pre vykonavanie operacii
+; s FLASH pamatou.
+; Ten kod je firmware druhej urovne (second stage firmware)
+; a moze mat maximalne 1024 bajtov. Bude zavedeny do IRAM na adresu 0xF600.
+; Po nahrani do RAM, skoci na adresu 0xF600 a zacne vykonavat second
+; stage firmware.
+FW_STAGE_1 SECTION CODE AT FW1BASE
+
+; Typ Task nemoze byt, pretoze nam kompilator kod umiestni na adresu 0000h
+MAIN PROC
+ ; Enable XRAM1 where firmware will be stored
+ BSET SYSCON.2 ; XPEN = 1
+ BSET XPERCON.2 ; XRAM1EN = 1
+ ; Load the firmware base address in XRAM1
+ MOV R0,#FW2BASE
+ ; Receive firmware
+REC: JNB S0RIC.7,REC ; cakame na bajt zo serioveho rozhrania
+ MOVB [R0],S0RBUF ; zapiseme ho do RAM
+ BCLR S0RIC.7 ; zhodime priznak prijatia ramca zo serioveho rozhrania
+ CMPI1 R0,#FW2END ; najprv sa porovnava, az potom inkrementuje
+ JMPR CC_ULT,REC
+ ; Enter the firmware
+ JMP FW2START
+MAIN ENDP
+
+FW_STAGE_1 ENDS
+
+FW_S2 SECTION CODE AT FW2BASE
+FW2START:
+FW_S2 ENDS
+
+END \ No newline at end of file
diff --git a/firmware/stage_1/stage_1.uvgui.jan b/firmware/stage_1/stage_1.uvgui.jan
new file mode 100755
index 0000000..a24e09a
--- /dev/null
+++ b/firmware/stage_1/stage_1.uvgui.jan
@@ -0,0 +1,2601 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectGui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_gui.xsd">
+
+ <SchemaVersion>-5.1</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <ViewPool/>
+
+ <SECTreeCtrl>
+ <View>
+ <WinId>38003</WinId>
+ <ViewName>Registers</ViewName>
+ <TableColWidths>115 184</TableColWidths>
+ </View>
+ <View>
+ <WinId>346</WinId>
+ <ViewName>Code Coverage</ViewName>
+ <TableColWidths>442 160</TableColWidths>
+ </View>
+ <View>
+ <WinId>204</WinId>
+ <ViewName>Performance Analyzer</ViewName>
+ <TableColWidths>602</TableColWidths>
+ </View>
+ </SECTreeCtrl>
+
+ <TreeListPane>
+ <View>
+ <WinId>1506</WinId>
+ <ViewName>Symbols</ViewName>
+ <UserString></UserString>
+ <TableColWidths>133 133 133</TableColWidths>
+ </View>
+ <View>
+ <WinId>1936</WinId>
+ <ViewName>Watch 1</ViewName>
+ <UserString></UserString>
+ <TableColWidths>133 133 133</TableColWidths>
+ </View>
+ <View>
+ <WinId>1937</WinId>
+ <ViewName>Watch 2</ViewName>
+ <UserString></UserString>
+ <TableColWidths>133 133 133</TableColWidths>
+ </View>
+ <View>
+ <WinId>1935</WinId>
+ <ViewName>Call Stack + Locals</ViewName>
+ <UserString></UserString>
+ <TableColWidths>133 133 133</TableColWidths>
+ </View>
+ <View>
+ <WinId>2506</WinId>
+ <ViewName>Trace Data</ViewName>
+ <UserString></UserString>
+ <TableColWidths>75 135 130 95 70 230 200 150</TableColWidths>
+ </View>
+ </TreeListPane>
+
+ <WindowSettings>
+ <LogicAnalizer>
+ <ShowLACursor>1</ShowLACursor>
+ <ShowSignalInfo>1</ShowSignalInfo>
+ <ShowCycles>0</ShowCycles>
+ <LeftSideBarSize>0</LeftSideBarSize>
+ <TimeBaseIndex>-1</TimeBaseIndex>
+ </LogicAnalizer>
+ </WindowSettings>
+
+ <WinLayoutEx>
+ <sActiveDebugView></sActiveDebugView>
+ <WindowPosition>
+ <length>44</length>
+ <flags>0</flags>
+ <showCmd>3</showCmd>
+ <MinPosition>
+ <xPos>-1</xPos>
+ <yPos>-1</yPos>
+ </MinPosition>
+ <MaxPosition>
+ <xPos>-1684</xPos>
+ <yPos>-4</yPos>
+ </MaxPosition>
+ <NormalPosition>
+ <Top>89</Top>
+ <Left>-1243</Left>
+ <Right>-322</Right>
+ <Bottom>869</Bottom>
+ </NormalPosition>
+ </WindowPosition>
+ <MDIClientArea>
+ <RegID>0</RegID>
+ <MDITabState>
+ <Len>381</Len>
+ <Data>010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000001000000020000000000000001000000495A3A5C686F6D655C6A616E5C746D705C736B6F6C615C42505C746578745C5553425F464C4153485C7372635C696D706C5C6669726D776172655C6964656E745C6964656E742E61363600000000096964656E742E61363600000000BECEA100FFFFFFFF4F5A3A5C686F6D655C6A616E5C746D705C736B6F6C615C42505C746578745C5553425F464C4153485C7372635C696D706C5C6669726D776172655C73743130663236395C73743130663236392E613636000000000C73743130663236392E61363600000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000A9FAFFFF5E00000000000000E8030000</Data>
+ </MDITabState>
+ </MDIClientArea>
+ <ViewEx>
+ <ViewType>0</ViewType>
+ <ViewName>Build</ViewName>
+ <Window>
+ <RegID>-1</RegID>
+ <PaneID>-1</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>940100004B000000F8030000B4000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>A4FBFFFF1A01000008FEFFFF83010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1005</RegID>
+ <PaneID>1005</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000065000000E1000000F3020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>109</RegID>
+ <PaneID>109</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000065000000E1000000F3020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1465</RegID>
+ <PaneID>1465</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1466</RegID>
+ <PaneID>1466</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1467</RegID>
+ <PaneID>1467</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1468</RegID>
+ <PaneID>1468</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1506</RegID>
+ <PaneID>1506</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1913</RegID>
+ <PaneID>1913</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1935</RegID>
+ <PaneID>1935</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1936</RegID>
+ <PaneID>1936</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1937</RegID>
+ <PaneID>1937</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1939</RegID>
+ <PaneID>1939</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1940</RegID>
+ <PaneID>1940</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1941</RegID>
+ <PaneID>1941</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1942</RegID>
+ <PaneID>1942</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>195</RegID>
+ <PaneID>195</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000065000000E1000000F3020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>196</RegID>
+ <PaneID>196</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000065000000E1000000F3020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>197</RegID>
+ <PaneID>197</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>000000002703000090060000D5030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>198</RegID>
+ <PaneID>198</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>000000007A010000F8030000FA010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>199</RegID>
+ <PaneID>199</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>030000002A03000013040000BC030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>203</RegID>
+ <PaneID>203</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>204</RegID>
+ <PaneID>204</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>221</RegID>
+ <PaneID>221</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000000000000000000000000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>2506</RegID>
+ <PaneID>2506</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>2507</RegID>
+ <PaneID>2507</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>343</RegID>
+ <PaneID>343</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>346</RegID>
+ <PaneID>346</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35824</RegID>
+ <PaneID>35824</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>9701000065000000F50300009B000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35885</RegID>
+ <PaneID>35885</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35886</RegID>
+ <PaneID>35886</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35887</RegID>
+ <PaneID>35887</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35888</RegID>
+ <PaneID>35888</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35889</RegID>
+ <PaneID>35889</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35890</RegID>
+ <PaneID>35890</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35891</RegID>
+ <PaneID>35891</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35892</RegID>
+ <PaneID>35892</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35893</RegID>
+ <PaneID>35893</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35894</RegID>
+ <PaneID>35894</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35895</RegID>
+ <PaneID>35895</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35896</RegID>
+ <PaneID>35896</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35897</RegID>
+ <PaneID>35897</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35898</RegID>
+ <PaneID>35898</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35899</RegID>
+ <PaneID>35899</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35900</RegID>
+ <PaneID>35900</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35901</RegID>
+ <PaneID>35901</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35902</RegID>
+ <PaneID>35902</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35903</RegID>
+ <PaneID>35903</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35904</RegID>
+ <PaneID>35904</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35905</RegID>
+ <PaneID>35905</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>6B02000065000000F503000074010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>38003</RegID>
+ <PaneID>38003</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000065000000E1000000EE020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>38007</RegID>
+ <PaneID>38007</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>030000002A03000013040000BC030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>04000000170000000002000080000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>436</RegID>
+ <PaneID>436</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>030000002A03000013040000BC030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0400000017000000CF000000BB010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>437</RegID>
+ <PaneID>437</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>440</RegID>
+ <PaneID>440</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0300000094010000F5030000E1010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>040000001700000094010000A7010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59392</RegID>
+ <PaneID>59392</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>882</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000000000007D0300001A000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59393</RegID>
+ <PaneID>0</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000D503000090060000E8030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59399</RegID>
+ <PaneID>59399</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>439</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>1</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>000000001A000000C201000034000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59400</RegID>
+ <PaneID>59400</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>572</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>2</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0000000034000000470200004E000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <DockMan>
+ <Len>2619</Len>
+ <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF94010000B4000000F8030000B8000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000A4FBFFFF1A01000008FEFFFF83010000940100004B000000F8030000B40000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF640200004B000000680200008D010000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C00000180004000000000000078FCFFFF1A01000008FEFFFF5C020000680200004B000000F80300008D0100000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFE40000004B000000E80000000C0300000100000002000010040000000100000072FEFFFF7D020000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000010FAFFFF1A010000F4FAFFFFD6030000000000004B000000E40000000C0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000076010000F80300007A01000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB0900000180008000000000000010FAFFFF4902000008FEFFFFC9020000000000007A010000F8030000FA01000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFFC0100007A01000000020000FA01000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000000C030000900600001003000001000000010000100400000001000000EDFCFFFF67000000FFFFFFFF04000000C5000000C7000000B4010000779400000180008000000100000010FAFFFFDA03000026FEFFFF9F040000000000001003000090060000D50300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
+ </DockMan>
+ <ToolBar>
+ <RegID>59392</RegID>
+ <Name>File</Name>
+ <Buttons>
+ <Len>2030</Len>
+ <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000025235960000000000000003000252350370726506304646383448000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>1423</Len>
+ <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>1423</Len>
+ <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ToolBar>
+ <RegID>59399</RegID>
+ <Name>Build</Name>
+ <Buttons>
+ <Len>678</Len>
+ <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000004002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000004005000000000000000000000000000000000010000000100000000000000054275696C64B7010000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>583</Len>
+ <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>583</Len>
+ <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ToolBar>
+ <RegID>59400</RegID>
+ <Name>Debug</Name>
+ <Buttons>
+ <Len>2220</Len>
+ <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F7200000000000000000100000000000000010000000000000000000000010000000000000000000544656275673C020000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>898</Len>
+ <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>898</Len>
+ <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ControlBarsSummary>
+ <Bars>0</Bars>
+ <ScreenCX>1366</ScreenCX>
+ <ScreenCY>768</ScreenCY>
+ </ControlBarsSummary>
+ </ViewEx>
+ <ViewEx>
+ <ViewType>1</ViewType>
+ <ViewName>Debug</ViewName>
+ <Window>
+ <RegID>-1</RegID>
+ <PaneID>-1</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0005000097010000900600001A030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1005</RegID>
+ <PaneID>1005</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000AE0100008D01000001030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>5A0800001F000000EA090000EA020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>109</RegID>
+ <PaneID>109</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000AE0100008D01000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>5A0800001F000000EA090000EA020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1465</RegID>
+ <PaneID>1465</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A90100007202000041030000BA030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1466</RegID>
+ <PaneID>1466</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A90100007202000041030000BA030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1467</RegID>
+ <PaneID>1467</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A90100007202000041030000BA030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1468</RegID>
+ <PaneID>1468</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A90100007202000041030000BA030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1506</RegID>
+ <PaneID>1506</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00050000AB010000900600001A030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1913</RegID>
+ <PaneID>1913</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>97010000660000008D0600008E010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1935</RegID>
+ <PaneID>1935</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A90100007202000041030000BA030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000150200002B020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1936</RegID>
+ <PaneID>1936</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A90100007202000041030000BA030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000150200002B020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1937</RegID>
+ <PaneID>1937</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A90100007202000041030000BA030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000150200002B020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1939</RegID>
+ <PaneID>1939</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A90100007202000041030000BA030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1940</RegID>
+ <PaneID>1940</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A90100007202000041030000BA030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1941</RegID>
+ <PaneID>1941</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A90100007202000041030000BA030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>1942</RegID>
+ <PaneID>1942</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A90100007202000041030000BA030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>195</RegID>
+ <PaneID>195</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000AE0100008D01000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>5A0800001F000000EA090000EA020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>196</RegID>
+ <PaneID>196</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000AE0100008D01000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>5A0800001F000000EA090000EA020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>197</RegID>
+ <PaneID>197</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>030000003A020000D904000097020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>198</RegID>
+ <PaneID>198</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>32768</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>000000005B020000A2010000D3030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>199</RegID>
+ <PaneID>199</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>030000003A020000D904000097020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>203</RegID>
+ <PaneID>203</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>480300004F00000090060000D3030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AC0400002702000058080000A2040000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>204</RegID>
+ <PaneID>204</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>97010000660000008D0600008E010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>221</RegID>
+ <PaneID>221</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000000000000000000000000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>2506</RegID>
+ <PaneID>2506</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>2507</RegID>
+ <PaneID>2507</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A90100007202000041030000BA030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>343</RegID>
+ <PaneID>343</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>97010000660000008D0600008E010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>346</RegID>
+ <PaneID>346</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>97010000660000008D0600008E010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35824</RegID>
+ <PaneID>35824</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>97010000660000008D0600008E010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35885</RegID>
+ <PaneID>35885</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35886</RegID>
+ <PaneID>35886</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35887</RegID>
+ <PaneID>35887</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35888</RegID>
+ <PaneID>35888</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35889</RegID>
+ <PaneID>35889</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35890</RegID>
+ <PaneID>35890</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35891</RegID>
+ <PaneID>35891</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35892</RegID>
+ <PaneID>35892</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35893</RegID>
+ <PaneID>35893</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35894</RegID>
+ <PaneID>35894</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35895</RegID>
+ <PaneID>35895</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35896</RegID>
+ <PaneID>35896</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35897</RegID>
+ <PaneID>35897</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35898</RegID>
+ <PaneID>35898</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35899</RegID>
+ <PaneID>35899</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35900</RegID>
+ <PaneID>35900</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35901</RegID>
+ <PaneID>35901</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35902</RegID>
+ <PaneID>35902</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35903</RegID>
+ <PaneID>35903</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35904</RegID>
+ <PaneID>35904</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35905</RegID>
+ <PaneID>35905</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>16384</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03050000AE0100008D06000049040000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>AB0600001C0000003B080000E7020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>38003</RegID>
+ <PaneID>38003</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>1</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000AE0100008D01000001030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>5A0800001F000000EA090000EA020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>38007</RegID>
+ <PaneID>38007</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>030000003A020000D904000097020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000F302000028010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>436</RegID>
+ <PaneID>436</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>030000003A020000D904000097020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B0000007D010000D1020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>437</RegID>
+ <PaneID>437</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A90100007202000041030000BA030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000150200002B020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>440</RegID>
+ <PaneID>440</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A90100007202000041030000BA030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>850000009B000000150200002B020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59392</RegID>
+ <PaneID>59392</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>940</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>0000000000000000B70300001C000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59393</RegID>
+ <PaneID>0</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>00000000D303000090060000E6030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59399</RegID>
+ <PaneID>59399</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>463</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>1</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>000000001C000000DA01000038000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>59400</RegID>
+ <PaneID>59400</PaneID>
+ <IsVisible>1</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>612</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>8192</RecentFrameAlignment>
+ <RecentRowIndex>2</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>000000001C0000006F02000038000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>0A0000000A0000006E0000006E000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <DockMan>
+ <Len>2652</Len>
+ <Data>0000000009000000000000000020000000000000FFFFFFFFFFFFFFFF94010000A701000090060000AB01000000000000010000000400000001000000F9FEFFFFCD010000FFFFFFFF0500000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000940100006500000090060000BD010000940100004F00000090060000A701000000000000402800460500000014506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF5701000001000000FFFFFFFF57010000000000000080000001000000FFFFFFFFFFFFFFFF0000000057020000440300005B020000010000000100001004000000010000003AFDFFFF5000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000001000000A60100007102000044030000E9030000A60100005B02000044030000D303000000000000404100560E0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF000000000000000001000000000000000100000001000000FFFFFFFFA20100005B020000A6010000D303000001000000020000100400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF000000001F020000DC04000023020000000000000100000004000000010000000000000000000000FFFFFFFF04000000C5000000C7000000B401000077940000018000800000000000000000000039020000DC040000C60200000000000023020000DC040000B00200000000000040820046040000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000040000001000000FFFFFFFFFFFFFFFF440300004F00000048030000D303000001000000020000100400000001000000000000000000000000000000000000000000000001000000CB000000000000000000000000000000000000000000000001000000CB00000001000000CB00000002000000FFFF02001200434D756C746950616E654672616D65576E64000100945A0800001F000000EA090000EA02000001000000000000000200000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000400000010000005A0800001F000000EA090000EA0200000000000097010000900100001A0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF04000000000000000000000000000000000000000000000001000000FFFFFFFFED030000058000010094AB0600001C0000003B080000E702000001000000000000000200000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000001800040000001000000AB0600001C0000003B080000E70200000005000097010000900600001A0300000000000040410056170000000753796D626F6C7301000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFE20500000000000000000000</Data>
+ </DockMan>
+ <ToolBar>
+ <RegID>59392</RegID>
+ <Name>File</Name>
+ <Buttons>
+ <Len>2015</Len>
+ <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000443414C4C960000000000000001000443414C4C00000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020001001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>1423</Len>
+ <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>1423</Len>
+ <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ToolBar>
+ <RegID>59399</RegID>
+ <Name>Build</Name>
+ <Buttons>
+ <Len>657</Len>
+ <Data>00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64CF010000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>583</Len>
+ <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>583</Len>
+ <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ToolBar>
+ <RegID>59400</RegID>
+ <Name>Debug</Name>
+ <Buttons>
+ <Len>2220</Len>
+ <Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000004002A00000000000000000000000000000000010000000100000001801C800000000004002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020001003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000002000100320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000020000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
+ </Buttons>
+ <OriginalItems>
+ <Len>898</Len>
+ <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
+ </OriginalItems>
+ <OrigResetItems>
+ <Len>898</Len>
+ <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000</Data>
+ </OrigResetItems>
+ </ToolBar>
+ <ControlBarsSummary>
+ <Bars>0</Bars>
+ <ScreenCX>1680</ScreenCX>
+ <ScreenCY>1050</ScreenCY>
+ </ControlBarsSummary>
+ </ViewEx>
+ </WinLayoutEx>
+
+ <MDIGroups>
+ <Orientation>1</Orientation>
+ <ActiveMDIGroup>0</ActiveMDIGroup>
+ <MDIGroup>
+ <Size>100</Size>
+ <ActiveTab>0</ActiveTab>
+ <Doc>
+ <Name>Z:\home\jan\tmp\skola\BP\firmware\ident\stage_1.a66</Name>
+ <ColumnNumber>10</ColumnNumber>
+ <TopLine>4</TopLine>
+ <CurrentLine>38</CurrentLine>
+ <Folding>0</Folding>
+ <ContractedFolders></ContractedFolders>
+ <PaneID>0</PaneID>
+ </Doc>
+ </MDIGroup>
+ </MDIGroups>
+
+</ProjectGui>
diff --git a/firmware/stage_1/stage_1.uvopt b/firmware/stage_1/stage_1.uvopt
new file mode 100755
index 0000000..29191e8
--- /dev/null
+++ b/firmware/stage_1/stage_1.uvopt
@@ -0,0 +1,269 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
+ <Target>
+ <TargetName>Target 1</TargetName>
+ <ToolsetNumber>0x2</ToolsetNumber>
+ <ToolsetName>166/167</ToolsetName>
+ <TargetOption>
+ <MCS166>
+ <Clock>40000000</Clock>
+ <uocRom>1</uocRom>
+ <uocXCAN>1</uocXCAN>
+ <hadROM>1</hadROM>
+ <hadXRAM>1</hadXRAM>
+ <hadICAN>1</hadICAN>
+ <uocIROM2>0</uocIROM2>
+ <uocIROM3>0</uocIROM3>
+ <uocXRAM3>0</uocXRAM3>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ <ICAN>
+ <Type>0</Type>
+ <StartAddress>0xe800</StartAddress>
+ <Size>0x800</Size>
+ </ICAN>
+ <IROM>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x40000</Size>
+ </IROM>
+ <XRAM>
+ <Type>0</Type>
+ <StartAddress>0xc000</StartAddress>
+ <Size>0x2000</Size>
+ </XRAM>
+ <IRAM>
+ <Type>0</Type>
+ <StartAddress>0xf600</StartAddress>
+ <Size>0x800</Size>
+ </IRAM>
+ <IROM2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </IROM2>
+ <IROM3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </IROM3>
+ <XRAM3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </XRAM3>
+ </OnChipMemories>
+ </MCS166>
+ <OPTTT>
+ <gFlags>1</gFlags>
+ <BeepAtEnd>1</BeepAtEnd>
+ <RunSim>1</RunSim>
+ <RunTarget>0</RunTarget>
+ <RunAbUc>0</RunAbUc>
+ </OPTTT>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <FlashByte>65535</FlashByte>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ </OPTHX>
+ <OPTLEX>
+ <PageWidth>120</PageWidth>
+ <PageLength>65</PageLength>
+ <TabStop>8</TabStop>
+ <ListingPath>.\Listings\</ListingPath>
+ </OPTLEX>
+ <ListingPage>
+ <CreateCListing>1</CreateCListing>
+ <CreateAListing>1</CreateAListing>
+ <CreateLListing>1</CreateLListing>
+ <CreateIListing>0</CreateIListing>
+ <AsmCond>1</AsmCond>
+ <AsmSymb>1</AsmSymb>
+ <AsmXref>0</AsmXref>
+ <CCond>1</CCond>
+ <CCode>0</CCode>
+ <CListInc>0</CListInc>
+ <CSymb>0</CSymb>
+ <LinkerCodeListing>0</LinkerCodeListing>
+ </ListingPage>
+ <OPTXL>
+ <LMap>1</LMap>
+ <LComments>1</LComments>
+ <LGenerateSymbols>1</LGenerateSymbols>
+ <LLibSym>1</LLibSym>
+ <LLines>1</LLines>
+ <LLocSym>1</LLocSym>
+ <LPubSym>1</LPubSym>
+ <LXref>0</LXref>
+ <LExpSel>0</LExpSel>
+ </OPTXL>
+ <OPTFL>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <IsCurrentTarget>1</IsCurrentTarget>
+ </OPTFL>
+ <CpuCode>255</CpuCode>
+ <Books>
+ <Book>
+ <Number>0</Number>
+ <Title>Data Sheet</Title>
+ <Path>DATASHTS\ST\ST10F269_DS.PDF</Path>
+ </Book>
+ <Book>
+ <Number>1</Number>
+ <Title>Programming Manual</Title>
+ <Path>DATASHTS\ST\ST10_PM.PDF</Path>
+ </Book>
+ </Books>
+ <DebugOpt>
+ <uSim>1</uSim>
+ <uTrg>0</uTrg>
+ <sLdApp>1</sLdApp>
+ <sGomain>1</sGomain>
+ <sRbreak>1</sRbreak>
+ <sRwatch>1</sRwatch>
+ <sRmem>1</sRmem>
+ <sRfunc>1</sRfunc>
+ <sRbox>1</sRbox>
+ <tLdApp>1</tLdApp>
+ <tGomain>0</tGomain>
+ <tRbreak>1</tRbreak>
+ <tRwatch>1</tRwatch>
+ <tRmem>1</tRmem>
+ <tRfunc>0</tRfunc>
+ <tRbox>1</tRbox>
+ <tRtrace>1</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
+ <sRunDeb>0</sRunDeb>
+ <sLrtime>0</sLrtime>
+ <nTsel>-1</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
+ <pMon></pMon>
+ </DebugOpt>
+ <TargetDriverDllRegistry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>DLGD167</Key>
+ <Name>(103=-1,-1,-1,-1,0)(3005=-1,-1,-1,-1,0)(108=-1,-1,-1,-1,0)(3004=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(102=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(3008=-1,-1,-1,-1,0)(3009=-1,-1,-1,-1,0)(88=-1,-1,-1,-1,0)(89=-1,-1,-1,-1,0)(90=-1,-1,-1,-1,0)(93=-1,-1,-1,-1,0)(94=-1,-1,-1,-1,0)(95=-1,-1,-1,-1,0)(96=-1,-1,-1,-1,0)(97=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0)(101=-1,-1,-1,-1,0)(98=-1,-1,-1,-1,0)(105=-1,-1,-1,-1,0)(104=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(3007=-1,-1,-1,-1,0)(3000=-1,-1,-1,-1,0)(3003=-1,-1,-1,-1,0)(3034=-1,-1,-1,-1,0)(3012=-1,-1,-1,-1,0)</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
+ <DebugFlag>
+ <trace>0</trace>
+ <periodic>1</periodic>
+ <aLwin>1</aLwin>
+ <aCover>0</aCover>
+ <aSer1>0</aSer1>
+ <aSer2>0</aSer2>
+ <aPa>0</aPa>
+ <viewmode>1</viewmode>
+ <vrSel>0</vrSel>
+ <aSym>0</aSym>
+ <aTbox>0</aTbox>
+ <AscS1>0</AscS1>
+ <AscS2>0</AscS2>
+ <AscS3>0</AscS3>
+ <aSer3>0</aSer3>
+ <eProf>0</eProf>
+ <aLa>0</aLa>
+ <aPa1>0</aPa1>
+ <AscS4>0</AscS4>
+ <aSer4>0</aSer4>
+ <StkLoc>0</StkLoc>
+ <TrcWin>0</TrcWin>
+ <newCpu>0</newCpu>
+ <uProt>0</uProt>
+ </DebugFlag>
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ </TargetOption>
+ </Target>
+
+ <Group>
+ <GroupName>stage_1</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>1</tvExp>
+ <Focus>0</Focus>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>.\stage_1.a66</PathWithFileName>
+ <FilenameWithoutPath>stage_1.a66</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+</ProjectOpt>
diff --git a/firmware/stage_1/stage_1.uvproj b/firmware/stage_1/stage_1.uvproj
new file mode 100755
index 0000000..8e95cad
--- /dev/null
+++ b/firmware/stage_1/stage_1.uvproj
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
+
+ <SchemaVersion>1.1</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Targets>
+ <Target>
+ <TargetName>Target 1</TargetName>
+ <ToolsetNumber>0x2</ToolsetNumber>
+ <ToolsetName>166/167</ToolsetName>
+ <TargetOption>
+ <TargetCommonOption>
+ <Device>ST10F269</Device>
+ <Vendor>STMicroelectronics</Vendor>
+ <Cpu>IRAM (0xF600 - 0xFDFF) XRAM (0xC000-0xDFFF) XRAM2(0xE000-0xE7FF) IROM(0-0x3FFFF) ICAN(0xE800-0xEFFF) CLOCK(40000000) MOD167</Cpu>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile>"LIB\START167.A66" ("C16x/ST10 Startup Code")</StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId>3236</DeviceId>
+ <RegisterFile>REGST10F269.H</RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile></SFDFile>
+ <bCustSvd>0</bCustSvd>
+ <UseEnv>0</UseEnv>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
+ <TargetStatus>
+ <Error>0</Error>
+ <ExitCodeStop>0</ExitCodeStop>
+ <ButtonStop>0</ButtonStop>
+ <NotGenerated>0</NotGenerated>
+ <InvalidFlash>1</InvalidFlash>
+ </TargetStatus>
+ <OutputDirectory>.\Objects\</OutputDirectory>
+ <OutputName>stage_1</OutputName>
+ <CreateExecutable>1</CreateExecutable>
+ <CreateLib>0</CreateLib>
+ <CreateHexFile>1</CreateHexFile>
+ <DebugInformation>1</DebugInformation>
+ <BrowseInformation>1</BrowseInformation>
+ <ListingPath>.\Listings\</ListingPath>
+ <HexFormatSelection>1</HexFormatSelection>
+ <Merge32K>0</Merge32K>
+ <CreateBatchFile>0</CreateBatchFile>
+ <BeforeCompile>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
+ </BeforeCompile>
+ <BeforeMake>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopB1X>0</nStopB1X>
+ <nStopB2X>0</nStopB2X>
+ </BeforeMake>
+ <AfterMake>
+ <RunUserProg1>1</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name>Z:\mnt\shared-ntfs\bin\win\hex2bin.exe Z:\mnt\shared-ntfs\sw\firmware\stage_1\Objects\stage_1.H86</UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>2</nStopA1X>
+ <nStopA2X>0</nStopA2X>
+ </AfterMake>
+ <SelectedForBatchBuild>0</SelectedForBatchBuild>
+ <SVCSIdString></SVCSIdString>
+ </TargetCommonOption>
+ <CommonProperty>
+ <UseCPPCompiler>0</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>0</AlwaysBuild>
+ <GenerateAssemblyFile>0</GenerateAssemblyFile>
+ <AssembleAssemblyFile>0</AssembleAssemblyFile>
+ <PublicsOnly>0</PublicsOnly>
+ <StopOnExitCode>3</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>1</ComprImg>
+ </CommonProperty>
+ <DllOption>
+ <SimDllName>S166.DLL</SimDllName>
+ <SimDllArguments>-cEXTMAC</SimDllArguments>
+ <SimDlgDll>D167.DLL</SimDlgDll>
+ <SimDlgDllArguments>-p269</SimDlgDllArguments>
+ <TargetDllName>S166.DLL</TargetDllName>
+ <TargetDllArguments>-cEXTMAC</TargetDllArguments>
+ <TargetDlgDll>T167.DLL</TargetDlgDll>
+ <TargetDlgDllArguments>-p269</TargetDlgDllArguments>
+ </DllOption>
+ <DebugOption>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ <Oh166RecLen>16</Oh166RecLen>
+ </OPTHX>
+ <Simulator>
+ <UseSimulator>1</UseSimulator>
+ <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+ <RunToMain>1</RunToMain>
+ <RestoreBreakpoints>1</RestoreBreakpoints>
+ <RestoreWatchpoints>1</RestoreWatchpoints>
+ <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+ <RestoreFunctions>1</RestoreFunctions>
+ <RestoreToolbox>1</RestoreToolbox>
+ <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
+ <RestoreSysVw>1</RestoreSysVw>
+ </Simulator>
+ <Target>
+ <UseTarget>0</UseTarget>
+ <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+ <RunToMain>0</RunToMain>
+ <RestoreBreakpoints>1</RestoreBreakpoints>
+ <RestoreWatchpoints>1</RestoreWatchpoints>
+ <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+ <RestoreFunctions>0</RestoreFunctions>
+ <RestoreToolbox>1</RestoreToolbox>
+ <RestoreTracepoints>1</RestoreTracepoints>
+ <RestoreSysVw>1</RestoreSysVw>
+ </Target>
+ <RunDebugAfterBuild>0</RunDebugAfterBuild>
+ <TargetSelection>-1</TargetSelection>
+ <SimDlls>
+ <CpuDll></CpuDll>
+ <CpuDllArguments></CpuDllArguments>
+ <PeripheralDll></PeripheralDll>
+ <PeripheralDllArguments></PeripheralDllArguments>
+ <InitializationFile></InitializationFile>
+ </SimDlls>
+ <TargetDlls>
+ <CpuDll></CpuDll>
+ <CpuDllArguments></CpuDllArguments>
+ <PeripheralDll></PeripheralDll>
+ <PeripheralDllArguments></PeripheralDllArguments>
+ <InitializationFile></InitializationFile>
+ <Driver></Driver>
+ </TargetDlls>
+ </DebugOption>
+ <Utilities>
+ <Flash1>
+ <UseTargetDll>0</UseTargetDll>
+ <UseExternalTool>0</UseExternalTool>
+ <RunIndependent>0</RunIndependent>
+ <UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
+ <Capability>0</Capability>
+ <DriverSelection>-1</DriverSelection>
+ </Flash1>
+ <bUseTDR>0</bUseTDR>
+ <Flash2></Flash2>
+ <Flash3></Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
+ <FcArmLst>0</FcArmLst>
+ </Utilities>
+ <Target166>
+ <Target166Misc>
+ <MemoryModel>1</MemoryModel>
+ <RTOS>0</RTOS>
+ <NearData>6</NearData>
+ <iData>65535</iData>
+ <sData>65535</sData>
+ <bData>65535</bData>
+ <Mod167>1</Mod167>
+ <ModV2>0</ModV2>
+ <UseOnChipRom>1</UseOnChipRom>
+ <UseOnChipXramCan>1</UseOnChipXramCan>
+ <UseOnChipXram2>1</UseOnChipXram2>
+ <NearRamMemory>0</NearRamMemory>
+ <NearRomMemory>0</NearRomMemory>
+ <UseIrom2>0</UseIrom2>
+ <UseIrom3>0</UseIrom3>
+ <UseXram3>0</UseXram3>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ </OnChipMemories>
+ </Target166Misc>
+ <C166>
+ <Optimize>6</Optimize>
+ <SpeedSize>1</SpeedSize>
+ <RegisterColoring>0</RegisterColoring>
+ <UseStaticMemory>0</UseStaticMemory>
+ <WarningLevel>2</WarningLevel>
+ <AliasChecking>1</AliasChecking>
+ <VariablesInOrder>0</VariablesInOrder>
+ <CharAsUnsignedChar>0</CharAsUnsignedChar>
+ <NoDppSave>1</NoDppSave>
+ <Float64>0</Float64>
+ <SaveTempVar>0</SaveTempVar>
+ <ReorderInstruction>0</ReorderInstruction>
+ <VariousControls>
+ <MiscControls>MOD167</MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </C166>
+ <Ec166>
+ <WarningLevel>2</WarningLevel>
+ <UnsignedChar>0</UnsignedChar>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </Ec166>
+ <A166>
+ <UseMPL>1</UseMPL>
+ <CaseSensitiveSymbols>0</CaseSensitiveSymbols>
+ <VariousControls>
+ <MiscControls>MOD167</MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath>..\..\firmware\include</IncludePath>
+ </VariousControls>
+ </A166>
+ <L166>
+ <UseLinkFile>0</UseLinkFile>
+ <LinkerCmdFile></LinkerCmdFile>
+ <LinkOnly>0</LinkOnly>
+ <UseTargetSet>1</UseTargetSet>
+ <DppUsage>0</DppUsage>
+ <nDataSelection>2</nDataSelection>
+ <nConstSelection>1</nConstSelection>
+ <NearDataString></NearDataString>
+ <NearConstString></NearConstString>
+ <iStartStopString></iStartStopString>
+ <InterruptVectorAddress></InterruptVectorAddress>
+ <WarningLevel>2</WarningLevel>
+ <DisableWarningNumbers></DisableWarningNumbers>
+ <Assign></Assign>
+ <Registerbank></Registerbank>
+ <Reserve></Reserve>
+ <MiscControls></MiscControls>
+ <UserClasses></UserClasses>
+ <UserSection></UserSection>
+ </L166>
+ </Target166>
+ </TargetOption>
+ <Groups>
+ <Group>
+ <GroupName>stage_1</GroupName>
+ <Files>
+ <File>
+ <FileName>stage_1.a66</FileName>
+ <FileType>2</FileType>
+ <FilePath>.\stage_1.a66</FilePath>
+ </File>
+ </Files>
+ </Group>
+ </Groups>
+ </Target>
+ </Targets>
+
+</Project>
diff --git a/main.cpp b/main.cpp
new file mode 100755
index 0000000..2d25318
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,219 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h> /* strerror() */
+#include <stdint.h>
+
+#include <iostream>
+#include <csignal>
+#include <string>
+#include <sstream>
+#include <vector>
+#include <memory>
+
+#include "ExitCodes.hpp"
+#include "Logger.hpp"
+#include "ExitException.hpp"
+#include "UserConfig.hpp"
+#include "SerialPortFactory.hpp"
+#include "SerialPort.hpp"
+#include "Mcu.hpp"
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::ostringstream;
+using std::vector;
+using std::unique_ptr;
+
+void opSpeeds(CUserConfig & uc);
+void opRead(CUserConfig & uc, CMcu & mcu);
+void opErase(CUserConfig & uc, CMcu & mcu);
+void opWrite(CUserConfig & uc, CMcu & mcu);
+
+vector<uint8_t> readDataFile(const string fpath);
+void writeDataFile(const string fpath, vector<uint8_t> data);
+
+// Global variable to be accessed in signal handler
+unique_ptr<CSerialPort> sp;
+
+// Uvolnime zdroje pri ukonceni na signal
+void
+signalHandler(int dummy)
+{
+ CLogger::info("Exiting on signal");
+ sp->close();
+ exit(EXIT_MAIN_SIGNAL);
+}
+
+int
+main(int argc, char **argv)
+{
+ // Set signal handler
+ signal(SIGINT, signalHandler);
+
+ CSerialPortFactory serialPortFactory;
+ sp = serialPortFactory.getSerialPort();
+
+ try {
+ // Parse user command line configuration
+ CUserConfig uc(argc, argv);
+ // Configure logging
+ if (uc.isVerboseModeSet())
+ CLogger::setLogInfo(true);
+ // Execute selected operation
+ if (uc.isHelpSet()) {
+ cout << uc.getHelpMessage(string(argv[0]));
+ } else if (uc.isVersionSet()) {
+ cout << PROGRAM_NAME << " " << PROGRAM_VERSION << endl;
+ } else if (uc.isSpeedsSet()) {
+ opSpeeds(uc);
+ } else if (uc.isIdentSet() || uc.isEraseSet() || uc.isReadSet() || uc.isWriteSet()) {
+ // Open serial port
+ sp->open(uc.getSerialPortName(), uc.getSerialSpeed());
+ // Get MCU model
+ unique_ptr<CMcu> mcu(new CMcu(*sp, uc.getMcuFrequency()));
+ // Execute requested operation
+ if (!uc.isIdentSet()) {
+ if (uc.isReadSet())
+ opRead(uc, *mcu);
+ else if (uc.isEraseSet())
+ opErase(uc, *mcu);
+ else if (uc.isWriteSet())
+ opWrite(uc, *mcu);
+ } else {
+ cout << mcu->ident() << endl;
+ }
+ } else {
+ CLogger::error("No operation requested. To get help type: " + string(argv[0]) + " help" , EXIT_MAIN_NOOP);
+ }
+
+ sp->close();
+ return 0;
+ } catch (CExitException & e) {
+ return e.getReturnValue();
+ }
+}
+
+void
+opSpeeds(CUserConfig & uc)
+{
+
+ string s = sp->getSpeeds(uc.getSerialPortName());
+ cout << "Baudrates supported by serial port " << uc.getSerialPortName() << ":" << endl;
+ cout << s;
+}
+
+void
+opRead(CUserConfig & uc, CMcu & mcu)
+{
+ CLogger::info("Reading memory");
+
+ int rl = uc.getReadLength();
+ vector<uint8_t> r;
+
+ if (rl == -1)
+ r = mcu.read(uc.isPrintProgressSet());
+ else
+ r = mcu.read(rl, uc.isPrintProgressSet());
+ // Write data file musi dostat spravnu hodnotu
+ writeDataFile(uc.getReadOutputFname(), r);
+}
+
+void
+opErase(CUserConfig & uc, CMcu & mcu)
+{
+ if (uc.getEraseBlockList().size() != 0) {
+ CLogger::info("Erasing memory by blocks");
+ mcu.erase(uc.getEraseBlockList());
+ } else {
+ CLogger::info("Erasing whole memory");
+ mcu.erase();
+ }
+}
+
+void
+opWrite(CUserConfig & uc, CMcu & mcu)
+{
+ vector<uint8_t> data;
+
+ data = readDataFile(uc.getWriteInputFname());
+
+ if (uc.getWriteEraseWholeMemory()) {
+ CLogger::info("Erasing whole memory");
+ mcu.erase();
+ } else {
+ CLogger::info("Erasing memory by blocks");
+ mcu.erase(0, data.size() - 1);
+ }
+
+ CLogger::info("Writing memory");
+ mcu.write(data, uc.isPrintProgressSet());
+
+ if (uc.getWriteCheckByRead()) {
+ CLogger::info("Checking result of write operation by reading");
+
+ vector<uint8_t> rdata = mcu.read(data.size());
+ for (size_t i = 0; i < data.size(); i++) {
+ if (rdata[i] != data[i])
+ CLogger::error("Write operation unsucessful", EXIT_MAIN_PROG_VERIFY);
+ }
+
+ CLogger::info("Write operation was successful");
+ }
+}
+
+
+vector<uint8_t>
+readDataFile(const string fpath)
+{
+ FILE *f;
+ size_t size;
+#ifdef UNIX
+ char mode[3] = "r";
+#else
+ char mode[3] = "rb";
+#endif
+
+ if ((f = fopen(fpath.c_str(), mode)) == NULL)
+ CLogger::error("Cannot open file for reading: " + fpath, EXIT_MAIN_FILE_INOUT);
+
+ // Determine file size
+ fseek(f, 0, SEEK_END);
+ size = ftell(f);
+ fseek(f, 0, SEEK_SET);
+
+ vector<uint8_t> data;
+ data.resize(size);
+
+ size_t r = fread(data.data(), sizeof(uint8_t), size, f);
+ fclose(f);
+
+ if (r != size)
+ CLogger::error("Cannot read from file: " + fpath, EXIT_MAIN_FILE_INOUT);
+
+ return data;
+}
+
+void
+writeDataFile(const string fpath, vector<uint8_t> data)
+{
+ FILE *out;
+#ifdef UNIX
+ char mode[3] = "w";
+#else
+ char mode[3] = "wb";
+#endif
+
+ if ((out = fopen(fpath.c_str(), mode)) == NULL) {
+ ostringstream os;
+ os << "Cannot open file for writing: " << fpath << ": " << strerror(errno);
+ CLogger::error(os.str(), EXIT_MAIN_FILE_INOUT);
+ }
+
+ size_t r = fwrite(data.data(), sizeof(uint8_t), data.size(), out);
+ fclose(out);
+
+ if (r != data.size())
+ CLogger::error("Cannot write to file: " + fpath, EXIT_MAIN_FILE_INOUT);
+}
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
new file mode 100755
index 0000000..a457b14
--- /dev/null
+++ b/tests/CMakeLists.txt
@@ -0,0 +1,41 @@
+set (TestDataDir "${CMAKE_SOURCE_DIR}/tests")
+
+add_without_config_test (NoOperation "" 1)
+add_normal_test (IdentifyMcu "ident" 0)
+# Frequency option format. Budeme testovat len format, ostatne nemame
+# ako automaticky, pretoze sa to testuje len pri nahravani firmwaru.
+add_normal_test (FrequencyFormat1 "ident -f a" 2)
+add_normal_test (FrequencyFormat2 "ident -f 2a" 2)
+add_normal_test (FrequencyFormat3 "ident -f 2-2" 2)
+add_normal_test (FrequencyFormat4 "ident -f 22" 0)
+add_normal_test (FrequencyFormat5 "ident -f 22.2" 0)
+add_normal_test (FrequencyFormat6 "ident -f 2a2,2" 2)
+add_normal_test (FrequencyFormat7 "ident -f 2a2.2" 2)
+add_normal_test (FrequencyFormat8 "ident -f -33" 2)
+add_normal_test (FrequencyFormat9 "ident -f 0" 2)
+
+add_normal_test (UnknownOperation "XUnknownOperationX" 2)
+add_write_test (MissingInputFile "" 2 "" "")
+add_read_test (MissingOutputFile "" 2 "")
+add_erase_test (UnknownEraseOption "-?" 2 "" "")
+add_read_test (UnknownReadOption "-? read.bin" 2 "")
+add_write_test (UnknownWriteOption "-? write.bin" 2 "" "")
+add_erase_test (MissingValueForOption1 "-p" 2 "" "")
+add_erase_test (MissingValueForOption2 "-s" 2 "" "")
+add_erase_test (MissingValueForOption3 "-b" 2 "" "")
+add_read_test (ReadOptionFormat "-n -1" 2 "")
+add_normal_test (ReadMultipleOutputFilenames "read read.bin read2.bin" 2)
+add_normal_test (WriteMultipleInputFilenames "write random.bin random2.bin" 2)
+add_read_test (NonExistentSerialPort "-p XNonExistentSerialPortNameX" 7 "read.bin")
+add_write_test (CanNotOpenInputFile "" 3 "" "XNonExistentInputFileX")
+
+# Try to open directory instead of unreadable file
+add_normal_test (CanNotOpenOutputFile "read -n 1 SerialPort" 3)
+add_erase_test (EraseOptionFormat1 "-b a" 2 "" "")
+add_erase_test (EraseOptionFormat2 "-b 1.2" 2 "" "")
+add_erase_test (EraseOptionFormat3 "-b 1,a" 2 "" "")
+add_erase_test (EraseOptionFormat4 "-b ,1,2" 2 "" "")
+add_erase_test (EraseOptionFormat5 "-b 1,2," 2 "" "")
+add_erase_test (EraseOptionFormat6 "-b 1,,2" 2 "" "")
+add_erase_test (EraseOptionFormat7 "-b -1,2,4,5,-1654" 6 "" "")
+add_erase_test (EraseOptionFormat8 "-b 1a" 2 "" "")
diff --git a/tests/erase.cmake b/tests/erase.cmake
new file mode 100755
index 0000000..1c27cfd
--- /dev/null
+++ b/tests/erase.cmake
@@ -0,0 +1,15 @@
+include (${TestFunctions})
+
+if (NOT "${TestFile}" STREQUAL "")
+ set (WriteArgs "write ${TestConfigOptions} ${TestFile}")
+ exec_test ("${WriteArgs}" 0)
+endif ()
+
+set (TestArgs "erase ${TestConfigOptions} ${TestArgs}")
+exec_test ("${TestArgs}" ${TestExitCode})
+
+if (NOT "${TestFile}" STREQUAL "" AND NOT "${TestBlessedFile}" STREQUAL "")
+ set (ReadArgs "read ${TestConfigOptions} erase_read.bin")
+ exec_test ("${ReadArgs}" 0)
+ compare_files (erase_read.bin ${TestBlessedFile})
+endif ()
diff --git a/tests/functions.cmake b/tests/functions.cmake
new file mode 100755
index 0000000..e902fa6
--- /dev/null
+++ b/tests/functions.cmake
@@ -0,0 +1,78 @@
+macro (M_SET_CONFIG_OPTIONS)
+ if (${SerialPortSpeed})
+ set (CONFIG_OPTIONS "${CONFIG_OPTIONS} -s ${SerialPortSpeed}")
+ endif ()
+ if (${DefaultSerialPortName})
+ set (CONFIG_OPTIONS "${CONFIG_OPTIONS} -p ${DefaultSerialPortName}")
+ endif ()
+ if (NOT "${McuCpuFrequency}" STREQUAL "")
+ set (CONFIG_OPTIONS "${CONFIG_OPTIONS} -f ${McuCpuFrequency}")
+ endif ()
+endmacro ()
+
+macro (M_ADD_TEST SCRIPT)
+ add_test(NAME ${TestNamespace}${NAME}
+ CONFIGURATIONS ${TestConfigurations}
+ COMMAND ${CMAKE_COMMAND}
+ -DTestFunctions=${CMAKE_SOURCE_DIR}/tests/functions.cmake
+ -DTestArgs=${ARGS}
+ -DTestConfigOptions=${CONFIG_OPTIONS}
+ -DTestExitCode=${EXITCODE}
+ -DTestBlessedFile=${BLESSEDFILE}
+ -DTestFile=${FILE}
+ -P ${SCRIPT}
+ )
+endmacro ()
+
+
+function (ADD_WITHOUT_CONFIG_TEST NAME ARGS EXITCODE)
+ m_add_test (${CMAKE_SOURCE_DIR}/tests/other_operations.cmake)
+endfunction ()
+
+function (ADD_NORMAL_TEST NAME ARGS EXITCODE)
+ m_set_config_options ()
+ m_add_test (${CMAKE_SOURCE_DIR}/tests/other_operations.cmake)
+endfunction ()
+
+function (ADD_ERASE_TEST NAME ARGS EXITCODE BLESSEDFILE FILE)
+ m_set_config_options ()
+ m_add_test (${CMAKE_SOURCE_DIR}/tests/erase.cmake)
+endfunction ()
+
+function (ADD_WRITE_TEST NAME ARGS EXITCODE BLESSEDFILE FILE)
+ m_set_config_options ()
+ m_add_test (${CMAKE_SOURCE_DIR}/tests/write.cmake)
+endfunction ()
+
+function (ADD_READ_TEST NAME ARGS EXITCODE FILE)
+ m_set_config_options ()
+ m_add_test (${CMAKE_SOURCE_DIR}/tests/read.cmake)
+endfunction ()
+
+
+# -------------------------------------------------------
+
+
+function (EXEC_TEST ARGS EXITCODE)
+ string (REPLACE " " ";" ARGS_LIST "${ARGS}")
+ execute_process (
+ COMMAND ${CMAKE_BINARY_DIR}/main ${ARGS_LIST}
+ RESULT_VARIABLE MAIN_RESULT
+ TIMEOUT 120
+ )
+ if (NOT ${MAIN_RESULT} EQUAL ${EXITCODE})
+ message(FATAL_ERROR "Unexpected exit code ${MAIN_RESULT}, expected ${EXITCODE}")
+ endif()
+ set (RETVAL ${MAIN_RESULT} PARENT_SCOPE)
+endfunction ()
+
+
+function(COMPARE_FILES F1 F2)
+ execute_process (
+ COMMAND ${CMAKE_COMMAND} -E compare_files ${F1} ${F2}
+ RESULT_VARIABLE CMP_RESULT
+ )
+ if(CMP_RESULT)
+ message(FATAL_ERROR "Files do not match: ${F1} ${F2}")
+ endif()
+endfunction()
diff --git a/tests/other_operations.cmake b/tests/other_operations.cmake
new file mode 100755
index 0000000..6c47577
--- /dev/null
+++ b/tests/other_operations.cmake
@@ -0,0 +1,5 @@
+include (${TestFunctions})
+
+set (TestArgs "${TestArgs} ${TestConfigOptions}")
+
+exec_test ("${TestArgs}" ${TestExitCode})
diff --git a/tests/read.cmake b/tests/read.cmake
new file mode 100755
index 0000000..4f24101
--- /dev/null
+++ b/tests/read.cmake
@@ -0,0 +1,12 @@
+include (${TestFunctions})
+
+set (TestArgs "read ${TestConfigOptions} ${TestArgs}")
+if (NOT "${TestFile}" STREQUAL "")
+ set (TestArgs "${TestArgs} read.bin")
+endif ()
+
+exec_test ("${TestArgs}" ${TestExitCode})
+
+if (NOT "${TestFile}" STREQUAL "" AND ${RETVAL} EQUAL 0)
+ compare_files (read.bin ${TestFile})
+endif ()
diff --git a/tests/st10f168/CMakeLists.txt b/tests/st10f168/CMakeLists.txt
new file mode 100755
index 0000000..aefd7c2
--- /dev/null
+++ b/tests/st10f168/CMakeLists.txt
@@ -0,0 +1,46 @@
+include (${CMAKE_SOURCE_DIR}/tests/functions.cmake)
+
+set (TestConfigurations st10f168)
+set (SerialPortSpeed 57600)
+set (McuCpuFrequency 22.1)
+set (TestNamespace 168_)
+
+add_without_config_test (MissingFrequencyOptionForIdent "ident -s ${SerialPortSpeed}" 0)
+add_without_config_test (MissingFrequencyOption "erase -s ${SerialPortSpeed}" 6)
+
+include (${CMAKE_SOURCE_DIR}/tests/CMakeLists.txt)
+
+set (TestDataDir "${CMAKE_SOURCE_DIR}/tests/st10f168/erase")
+
+add_erase_test (EraseWhole "" 0 ${TestDataDir}/ok_ones ${TestDataDir}/zeros)
+add_erase_test (EraseBlock0 "-b 0" 0 ${TestDataDir}/ok_b0_erased ${TestDataDir}/zeros)
+add_erase_test (EraseBlock1 "-b 1" 0 ${TestDataDir}/ok_b1_erased ${TestDataDir}/zeros)
+add_erase_test (EraseBlock2 "-b 2" 0 ${TestDataDir}/ok_b2_erased ${TestDataDir}/zeros)
+add_erase_test (EraseBlock3 "-b 3" 0 ${TestDataDir}/ok_b3_erased ${TestDataDir}/zeros)
+add_erase_test (EraseBlocks023 "-b 3,0,2" 0 ${TestDataDir}/ok_b023_erased ${TestDataDir}/zeros)
+
+set (TestDataDir "${CMAKE_SOURCE_DIR}/tests/st10f168/write")
+
+add_write_test (WriteWhole1 "" 0 ${TestDataDir}/random ${TestDataDir}/random)
+add_write_test (WriteZeros "" 0 ${TestDataDir}/zeros ${TestDataDir}/zeros)
+add_write_test (Write0B "-e" 6 ${TestDataDir}/ok_ones ${TestDataDir}/0B)
+add_write_test (Write1B "" 0 ${TestDataDir}/ok_1B ${TestDataDir}/1B)
+# Tests of automatic block erasing
+add_write_test (WriteZeros2 "" 0 ${TestDataDir}/zeros ${TestDataDir}/zeros)
+add_write_test (Write16K+Progress "-g" 0 ${TestDataDir}/ok_16K ${TestDataDir}/16K)
+add_write_test (Write16K_1B "" 0 ${TestDataDir}/ok_16K_1B ${TestDataDir}/16K_1B)
+add_write_test (Write64K "" 0 ${TestDataDir}/ok_64K ${TestDataDir}/64K)
+add_write_test (Write64K_1B "" 0 ${TestDataDir}/ok_64K_1B ${TestDataDir}/64K_1B)
+add_write_test (Write160K "" 0 ${TestDataDir}/ok_160K ${TestDataDir}/160K)
+add_write_test (Write160K_1B+Progress "-g" 0 ${TestDataDir}/ok_160K_1B ${TestDataDir}/160K_1B)
+# Test of write over size and erasing blocks with mas 0x00 (no block)
+add_write_test (Write256K_1B "" 6 ${TestDataDir}/ok_160K_1B ${TestDataDir}/256K_1B)
+
+set (TestDataDir "${CMAKE_SOURCE_DIR}/tests/st10f168/read")
+
+add_write_test (ReadWriteRandom "" 0 ${TestDataDir}/random ${TestDataDir}/random)
+add_read_test (Read0B "-n 0" 6 "X")
+add_read_test (Read256K_1B "-n 262145" 6 "X")
+add_read_test (Read1B+Progress "-g -n 1" 0 ${TestDataDir}/ok_1B)
+add_read_test (Read100003B "-n 100003" 0 ${TestDataDir}/ok_100003B)
+add_read_test (Read262144B+Progress "-g -n 262144" 0 ${TestDataDir}/ok_262144B)
diff --git a/tests/st10f168/erase/ok_b023_erased b/tests/st10f168/erase/ok_b023_erased
new file mode 100755
index 0000000..d96179f
--- /dev/null
+++ b/tests/st10f168/erase/ok_b023_erased
@@ -0,0 +1 @@
+
diff --git a/tests/st10f168/erase/ok_b0_erased b/tests/st10f168/erase/ok_b0_erased
new file mode 100755
index 0000000..95e0f78
--- /dev/null
+++ b/tests/st10f168/erase/ok_b0_erased
@@ -0,0 +1 @@
+
diff --git a/tests/st10f168/erase/ok_b1_erased b/tests/st10f168/erase/ok_b1_erased
new file mode 100755
index 0000000..7f23cd4
--- /dev/null
+++ b/tests/st10f168/erase/ok_b1_erased
Binary files differ
diff --git a/tests/st10f168/erase/ok_b2_erased b/tests/st10f168/erase/ok_b2_erased
new file mode 100755
index 0000000..37b9128
--- /dev/null
+++ b/tests/st10f168/erase/ok_b2_erased
Binary files differ
diff --git a/tests/st10f168/erase/ok_b3_erased b/tests/st10f168/erase/ok_b3_erased
new file mode 100755
index 0000000..252a4b1
--- /dev/null
+++ b/tests/st10f168/erase/ok_b3_erased
Binary files differ
diff --git a/tests/st10f168/erase/ok_ones b/tests/st10f168/erase/ok_ones
new file mode 100755
index 0000000..7145947
--- /dev/null
+++ b/tests/st10f168/erase/ok_ones
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/st10f168/erase/zeros b/tests/st10f168/erase/zeros
new file mode 100755
index 0000000..6d23118
--- /dev/null
+++ b/tests/st10f168/erase/zeros
Binary files differ
diff --git a/tests/st10f168/read/ok_100003B b/tests/st10f168/read/ok_100003B
new file mode 100755
index 0000000..23885fd
--- /dev/null
+++ b/tests/st10f168/read/ok_100003B
Binary files differ
diff --git a/tests/st10f168/read/ok_1B b/tests/st10f168/read/ok_1B
new file mode 100755
index 0000000..080c324
--- /dev/null
+++ b/tests/st10f168/read/ok_1B
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/st10f168/read/ok_262144B b/tests/st10f168/read/ok_262144B
new file mode 100755
index 0000000..2f8fd38
--- /dev/null
+++ b/tests/st10f168/read/ok_262144B
Binary files differ
diff --git a/tests/st10f168/read/random b/tests/st10f168/read/random
new file mode 100755
index 0000000..2f8fd38
--- /dev/null
+++ b/tests/st10f168/read/random
Binary files differ
diff --git a/tests/st10f168/write/0B b/tests/st10f168/write/0B
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/tests/st10f168/write/0B
diff --git a/tests/st10f168/write/160K b/tests/st10f168/write/160K
new file mode 100755
index 0000000..9f1ca19
--- /dev/null
+++ b/tests/st10f168/write/160K
Binary files differ
diff --git a/tests/st10f168/write/160K_1B b/tests/st10f168/write/160K_1B
new file mode 100755
index 0000000..897a312
--- /dev/null
+++ b/tests/st10f168/write/160K_1B
Binary files differ
diff --git a/tests/st10f168/write/16K b/tests/st10f168/write/16K
new file mode 100755
index 0000000..8642f9c
--- /dev/null
+++ b/tests/st10f168/write/16K
Binary files differ
diff --git a/tests/st10f168/write/16K_1B b/tests/st10f168/write/16K_1B
new file mode 100755
index 0000000..bd3999a
--- /dev/null
+++ b/tests/st10f168/write/16K_1B
Binary files differ
diff --git a/tests/st10f168/write/1B b/tests/st10f168/write/1B
new file mode 100755
index 0000000..79b7e4b
--- /dev/null
+++ b/tests/st10f168/write/1B
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/st10f168/write/256K_1B b/tests/st10f168/write/256K_1B
new file mode 100755
index 0000000..a17fc91
--- /dev/null
+++ b/tests/st10f168/write/256K_1B
Binary files differ
diff --git a/tests/st10f168/write/64K b/tests/st10f168/write/64K
new file mode 100755
index 0000000..6121083
--- /dev/null
+++ b/tests/st10f168/write/64K
Binary files differ
diff --git a/tests/st10f168/write/64K_1B b/tests/st10f168/write/64K_1B
new file mode 100755
index 0000000..c7a82fc
--- /dev/null
+++ b/tests/st10f168/write/64K_1B
Binary files differ
diff --git a/tests/st10f168/write/ok_160K b/tests/st10f168/write/ok_160K
new file mode 100755
index 0000000..45973ac
--- /dev/null
+++ b/tests/st10f168/write/ok_160K
Binary files differ
diff --git a/tests/st10f168/write/ok_160K_1B b/tests/st10f168/write/ok_160K_1B
new file mode 100755
index 0000000..16380d7
--- /dev/null
+++ b/tests/st10f168/write/ok_160K_1B
Binary files differ
diff --git a/tests/st10f168/write/ok_16K b/tests/st10f168/write/ok_16K
new file mode 100755
index 0000000..045c3b2
--- /dev/null
+++ b/tests/st10f168/write/ok_16K
Binary files differ
diff --git a/tests/st10f168/write/ok_16K_1B b/tests/st10f168/write/ok_16K_1B
new file mode 100755
index 0000000..6494471
--- /dev/null
+++ b/tests/st10f168/write/ok_16K_1B
Binary files differ
diff --git a/tests/st10f168/write/ok_1B b/tests/st10f168/write/ok_1B
new file mode 100755
index 0000000..6b839e2
--- /dev/null
+++ b/tests/st10f168/write/ok_1B
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/st10f168/write/ok_64K b/tests/st10f168/write/ok_64K
new file mode 100755
index 0000000..d27151e
--- /dev/null
+++ b/tests/st10f168/write/ok_64K
Binary files differ
diff --git a/tests/st10f168/write/ok_64K_1B b/tests/st10f168/write/ok_64K_1B
new file mode 100755
index 0000000..7ea0894
--- /dev/null
+++ b/tests/st10f168/write/ok_64K_1B
Binary files differ
diff --git a/tests/st10f168/write/ok_ones b/tests/st10f168/write/ok_ones
new file mode 100755
index 0000000..7145947
--- /dev/null
+++ b/tests/st10f168/write/ok_ones
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/st10f168/write/random b/tests/st10f168/write/random
new file mode 100755
index 0000000..c362624
--- /dev/null
+++ b/tests/st10f168/write/random
Binary files differ
diff --git a/tests/st10f168/write/zeros b/tests/st10f168/write/zeros
new file mode 100755
index 0000000..6d23118
--- /dev/null
+++ b/tests/st10f168/write/zeros
Binary files differ
diff --git a/tests/st10f269/CMakeLists.txt b/tests/st10f269/CMakeLists.txt
new file mode 100755
index 0000000..677259c
--- /dev/null
+++ b/tests/st10f269/CMakeLists.txt
@@ -0,0 +1,53 @@
+include (${CMAKE_SOURCE_DIR}/tests/functions.cmake)
+
+set (TestConfigurations st10f269)
+set (SerialPortSpeed 230400)
+set (TestNamespace 269_)
+
+include (${CMAKE_SOURCE_DIR}/tests/CMakeLists.txt)
+
+set (TestDataDir "${CMAKE_SOURCE_DIR}/tests/st10f269/erase")
+
+add_normal_test (IgnoreFrequencyOpt "ident -f 22.1" 0)
+
+add_erase_test (EraseWhole "" 0 ${TestDataDir}/ok_ones ${TestDataDir}/zeros)
+add_erase_test (EraseBlock0 "-b 0" 0 ${TestDataDir}/ok_b0_erased ${TestDataDir}/zeros)
+add_erase_test (EraseBlock1 "-b 1" 0 ${TestDataDir}/ok_b1_erased ${TestDataDir}/zeros)
+add_erase_test (EraseBlock2 "-b 2" 0 ${TestDataDir}/ok_b2_erased ${TestDataDir}/zeros)
+add_erase_test (EraseBlock3 "-b 3" 0 ${TestDataDir}/ok_b3_erased ${TestDataDir}/zeros)
+add_erase_test (EraseBlock4 "-b 4" 0 ${TestDataDir}/ok_b4_erased ${TestDataDir}/zeros)
+add_erase_test (EraseBlock5 "-b 5" 0 ${TestDataDir}/ok_b5_erased ${TestDataDir}/zeros)
+add_erase_test (EraseBlock6 "-b 6" 0 ${TestDataDir}/ok_b6_erased ${TestDataDir}/zeros)
+add_erase_test (EraseBlocks1246 "-b 2,4,1,6" 0 ${TestDataDir}/ok_b1246_erased ${TestDataDir}/zeros)
+
+set (TestDataDir "${CMAKE_SOURCE_DIR}/tests/st10f269/write")
+
+add_write_test (WriteWhole1 "" 0 ${TestDataDir}/random ${TestDataDir}/random)
+add_write_test (WriteZeros "" 0 ${TestDataDir}/zeros ${TestDataDir}/zeros)
+add_write_test (Write0B "-e" 6 ${TestDataDir}/ok_ones ${TestDataDir}/0B)
+add_write_test (Write1B "" 0 ${TestDataDir}/ok_1B ${TestDataDir}/1B)
+# Tests of automatic block erasing
+add_write_test (WriteZeros2 "" 0 ${TestDataDir}/zeros ${TestDataDir}/zeros)
+add_write_test (Write16K "" 0 ${TestDataDir}/ok_16K ${TestDataDir}/16K)
+add_write_test (Write16K_1B "" 0 ${TestDataDir}/ok_16K_1B ${TestDataDir}/16K_1B)
+add_write_test (Write24K "" 0 ${TestDataDir}/ok_24K ${TestDataDir}/24K)
+add_write_test (Write24K_1B "" 0 ${TestDataDir}/ok_24K_1B ${TestDataDir}/24K_1B)
+add_write_test (Write32K+Progress "-g" 0 ${TestDataDir}/ok_32K ${TestDataDir}/32K)
+add_write_test (Write32K_1B "" 0 ${TestDataDir}/ok_32K_1B ${TestDataDir}/32K_1B)
+add_write_test (Write64K "" 0 ${TestDataDir}/ok_64K ${TestDataDir}/64K)
+add_write_test (Write64K_1B "" 0 ${TestDataDir}/ok_64K_1B ${TestDataDir}/64K_1B)
+add_write_test (Write128K "" 0 ${TestDataDir}/ok_128K ${TestDataDir}/128K)
+add_write_test (Write128K_1B+Progress "-g" 0 ${TestDataDir}/ok_128K_1B ${TestDataDir}/128K_1B)
+add_write_test (Write192K "" 0 ${TestDataDir}/ok_192K ${TestDataDir}/192K)
+add_write_test (Write192K_1B "" 0 ${TestDataDir}/ok_192K_1B ${TestDataDir}/192K_1B)
+# Test of write over size and erasing blocks with mas 0x00 (no block)
+add_write_test (Write256K_1B "" 6 ${TestDataDir}/ok_192K_1B ${TestDataDir}/256K_1B)
+
+set (TestDataDir "${CMAKE_SOURCE_DIR}/tests/st10f269/read")
+
+add_write_test (ReadWriteRandom "" 0 ${TestDataDir}/random ${TestDataDir}/random)
+add_read_test (Read0B "-n 0" 6 "X")
+add_read_test (Read256K_1B "-n 262145" 6 "X")
+add_read_test (Read1B+Progress "-g -n 1" 0 ${TestDataDir}/ok_1B)
+add_read_test (Read100003B "-n 100003" 0 ${TestDataDir}/ok_100003B)
+add_read_test (Read262144B+Progress "-g -n 262144" 0 ${TestDataDir}/ok_262144B)
diff --git a/tests/st10f269/erase/ok_b0_erased b/tests/st10f269/erase/ok_b0_erased
new file mode 100755
index 0000000..95e0f78
--- /dev/null
+++ b/tests/st10f269/erase/ok_b0_erased
@@ -0,0 +1 @@
+
diff --git a/tests/st10f269/erase/ok_b1246_erased b/tests/st10f269/erase/ok_b1246_erased
new file mode 100755
index 0000000..0c7ec6e
--- /dev/null
+++ b/tests/st10f269/erase/ok_b1246_erased
Binary files differ
diff --git a/tests/st10f269/erase/ok_b1_erased b/tests/st10f269/erase/ok_b1_erased
new file mode 100755
index 0000000..d19e238
--- /dev/null
+++ b/tests/st10f269/erase/ok_b1_erased
Binary files differ
diff --git a/tests/st10f269/erase/ok_b2_erased b/tests/st10f269/erase/ok_b2_erased
new file mode 100755
index 0000000..c6dced9
--- /dev/null
+++ b/tests/st10f269/erase/ok_b2_erased
Binary files differ
diff --git a/tests/st10f269/erase/ok_b3_erased b/tests/st10f269/erase/ok_b3_erased
new file mode 100755
index 0000000..19fccaf
--- /dev/null
+++ b/tests/st10f269/erase/ok_b3_erased
Binary files differ
diff --git a/tests/st10f269/erase/ok_b4_erased b/tests/st10f269/erase/ok_b4_erased
new file mode 100755
index 0000000..ef74ce9
--- /dev/null
+++ b/tests/st10f269/erase/ok_b4_erased
Binary files differ
diff --git a/tests/st10f269/erase/ok_b5_erased b/tests/st10f269/erase/ok_b5_erased
new file mode 100755
index 0000000..354977e
--- /dev/null
+++ b/tests/st10f269/erase/ok_b5_erased
Binary files differ
diff --git a/tests/st10f269/erase/ok_b6_erased b/tests/st10f269/erase/ok_b6_erased
new file mode 100755
index 0000000..8299aa6
--- /dev/null
+++ b/tests/st10f269/erase/ok_b6_erased
Binary files differ
diff --git a/tests/st10f269/erase/ok_ones b/tests/st10f269/erase/ok_ones
new file mode 100755
index 0000000..7145947
--- /dev/null
+++ b/tests/st10f269/erase/ok_ones
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/st10f269/erase/zeros b/tests/st10f269/erase/zeros
new file mode 100755
index 0000000..6d23118
--- /dev/null
+++ b/tests/st10f269/erase/zeros
Binary files differ
diff --git a/tests/st10f269/read/ok_100003B b/tests/st10f269/read/ok_100003B
new file mode 100755
index 0000000..23885fd
--- /dev/null
+++ b/tests/st10f269/read/ok_100003B
Binary files differ
diff --git a/tests/st10f269/read/ok_1B b/tests/st10f269/read/ok_1B
new file mode 100755
index 0000000..080c324
--- /dev/null
+++ b/tests/st10f269/read/ok_1B
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/st10f269/read/ok_262144B b/tests/st10f269/read/ok_262144B
new file mode 100755
index 0000000..2f8fd38
--- /dev/null
+++ b/tests/st10f269/read/ok_262144B
Binary files differ
diff --git a/tests/st10f269/read/random b/tests/st10f269/read/random
new file mode 100755
index 0000000..2f8fd38
--- /dev/null
+++ b/tests/st10f269/read/random
Binary files differ
diff --git a/tests/st10f269/write/0B b/tests/st10f269/write/0B
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/tests/st10f269/write/0B
diff --git a/tests/st10f269/write/128K b/tests/st10f269/write/128K
new file mode 100755
index 0000000..296125e
--- /dev/null
+++ b/tests/st10f269/write/128K
Binary files differ
diff --git a/tests/st10f269/write/128K_1B b/tests/st10f269/write/128K_1B
new file mode 100755
index 0000000..c240692
--- /dev/null
+++ b/tests/st10f269/write/128K_1B
Binary files differ
diff --git a/tests/st10f269/write/16K b/tests/st10f269/write/16K
new file mode 100755
index 0000000..eb86315
--- /dev/null
+++ b/tests/st10f269/write/16K
Binary files differ
diff --git a/tests/st10f269/write/16K_1B b/tests/st10f269/write/16K_1B
new file mode 100755
index 0000000..3e2e673
--- /dev/null
+++ b/tests/st10f269/write/16K_1B
Binary files differ
diff --git a/tests/st10f269/write/192K b/tests/st10f269/write/192K
new file mode 100755
index 0000000..aeaad4e
--- /dev/null
+++ b/tests/st10f269/write/192K
Binary files differ
diff --git a/tests/st10f269/write/192K_1B b/tests/st10f269/write/192K_1B
new file mode 100755
index 0000000..6530b32
--- /dev/null
+++ b/tests/st10f269/write/192K_1B
Binary files differ
diff --git a/tests/st10f269/write/1B b/tests/st10f269/write/1B
new file mode 100755
index 0000000..79b7e4b
--- /dev/null
+++ b/tests/st10f269/write/1B
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/st10f269/write/24K b/tests/st10f269/write/24K
new file mode 100755
index 0000000..085be42
--- /dev/null
+++ b/tests/st10f269/write/24K
Binary files differ
diff --git a/tests/st10f269/write/24K_1B b/tests/st10f269/write/24K_1B
new file mode 100755
index 0000000..56d5125
--- /dev/null
+++ b/tests/st10f269/write/24K_1B
Binary files differ
diff --git a/tests/st10f269/write/256K_1B b/tests/st10f269/write/256K_1B
new file mode 100755
index 0000000..a17fc91
--- /dev/null
+++ b/tests/st10f269/write/256K_1B
Binary files differ
diff --git a/tests/st10f269/write/32K b/tests/st10f269/write/32K
new file mode 100755
index 0000000..bf94e24
--- /dev/null
+++ b/tests/st10f269/write/32K
Binary files differ
diff --git a/tests/st10f269/write/32K_1B b/tests/st10f269/write/32K_1B
new file mode 100755
index 0000000..29353a3
--- /dev/null
+++ b/tests/st10f269/write/32K_1B
Binary files differ
diff --git a/tests/st10f269/write/64K b/tests/st10f269/write/64K
new file mode 100755
index 0000000..a658eda
--- /dev/null
+++ b/tests/st10f269/write/64K
Binary files differ
diff --git a/tests/st10f269/write/64K_1B b/tests/st10f269/write/64K_1B
new file mode 100755
index 0000000..8eed060
--- /dev/null
+++ b/tests/st10f269/write/64K_1B
Binary files differ
diff --git a/tests/st10f269/write/mod/backup/128K_1B b/tests/st10f269/write/mod/backup/128K_1B
new file mode 100755
index 0000000..492a243
--- /dev/null
+++ b/tests/st10f269/write/mod/backup/128K_1B
Binary files differ
diff --git a/tests/st10f269/write/mod/backup/16K_1B b/tests/st10f269/write/mod/backup/16K_1B
new file mode 100755
index 0000000..7e46f7f
--- /dev/null
+++ b/tests/st10f269/write/mod/backup/16K_1B
Binary files differ
diff --git a/tests/st10f269/write/mod/backup/192K_1B b/tests/st10f269/write/mod/backup/192K_1B
new file mode 100755
index 0000000..def4d66
--- /dev/null
+++ b/tests/st10f269/write/mod/backup/192K_1B
Binary files differ
diff --git a/tests/st10f269/write/mod/backup/24K_1B b/tests/st10f269/write/mod/backup/24K_1B
new file mode 100755
index 0000000..4dcd1ad
--- /dev/null
+++ b/tests/st10f269/write/mod/backup/24K_1B
Binary files differ
diff --git a/tests/st10f269/write/mod/backup/32K_1B b/tests/st10f269/write/mod/backup/32K_1B
new file mode 100755
index 0000000..65d9f6d
--- /dev/null
+++ b/tests/st10f269/write/mod/backup/32K_1B
Binary files differ
diff --git a/tests/st10f269/write/mod/backup/64K_1B b/tests/st10f269/write/mod/backup/64K_1B
new file mode 100755
index 0000000..1a1e997
--- /dev/null
+++ b/tests/st10f269/write/mod/backup/64K_1B
Binary files differ
diff --git a/tests/st10f269/write/mod/ok/ok_128K_1B b/tests/st10f269/write/mod/ok/ok_128K_1B
new file mode 100755
index 0000000..2e6b6e5
--- /dev/null
+++ b/tests/st10f269/write/mod/ok/ok_128K_1B
Binary files differ
diff --git a/tests/st10f269/write/mod/ok/ok_16K_1B b/tests/st10f269/write/mod/ok/ok_16K_1B
new file mode 100755
index 0000000..af32479
--- /dev/null
+++ b/tests/st10f269/write/mod/ok/ok_16K_1B
Binary files differ
diff --git a/tests/st10f269/write/mod/ok/ok_192K_1B b/tests/st10f269/write/mod/ok/ok_192K_1B
new file mode 100755
index 0000000..f732165
--- /dev/null
+++ b/tests/st10f269/write/mod/ok/ok_192K_1B
Binary files differ
diff --git a/tests/st10f269/write/mod/ok/ok_24K_1B b/tests/st10f269/write/mod/ok/ok_24K_1B
new file mode 100755
index 0000000..883e4d5
--- /dev/null
+++ b/tests/st10f269/write/mod/ok/ok_24K_1B
Binary files differ
diff --git a/tests/st10f269/write/mod/ok/ok_32K_1B b/tests/st10f269/write/mod/ok/ok_32K_1B
new file mode 100755
index 0000000..a6415e4
--- /dev/null
+++ b/tests/st10f269/write/mod/ok/ok_32K_1B
Binary files differ
diff --git a/tests/st10f269/write/mod/ok/ok_64K_1B b/tests/st10f269/write/mod/ok/ok_64K_1B
new file mode 100755
index 0000000..e7f7433
--- /dev/null
+++ b/tests/st10f269/write/mod/ok/ok_64K_1B
Binary files differ
diff --git a/tests/st10f269/write/mod/r.bin b/tests/st10f269/write/mod/r.bin
new file mode 100755
index 0000000..0a11c71
--- /dev/null
+++ b/tests/st10f269/write/mod/r.bin
Binary files differ
diff --git a/tests/st10f269/write/ok_128K b/tests/st10f269/write/ok_128K
new file mode 100755
index 0000000..4b32c68
--- /dev/null
+++ b/tests/st10f269/write/ok_128K
Binary files differ
diff --git a/tests/st10f269/write/ok_128K_1B b/tests/st10f269/write/ok_128K_1B
new file mode 100755
index 0000000..2e6b6e5
--- /dev/null
+++ b/tests/st10f269/write/ok_128K_1B
Binary files differ
diff --git a/tests/st10f269/write/ok_16K b/tests/st10f269/write/ok_16K
new file mode 100755
index 0000000..247e716
--- /dev/null
+++ b/tests/st10f269/write/ok_16K
Binary files differ
diff --git a/tests/st10f269/write/ok_16K_1B b/tests/st10f269/write/ok_16K_1B
new file mode 100755
index 0000000..af32479
--- /dev/null
+++ b/tests/st10f269/write/ok_16K_1B
Binary files differ
diff --git a/tests/st10f269/write/ok_192K b/tests/st10f269/write/ok_192K
new file mode 100755
index 0000000..fcd454b
--- /dev/null
+++ b/tests/st10f269/write/ok_192K
Binary files differ
diff --git a/tests/st10f269/write/ok_192K_1B b/tests/st10f269/write/ok_192K_1B
new file mode 100755
index 0000000..f732165
--- /dev/null
+++ b/tests/st10f269/write/ok_192K_1B
Binary files differ
diff --git a/tests/st10f269/write/ok_1B b/tests/st10f269/write/ok_1B
new file mode 100755
index 0000000..6b839e2
--- /dev/null
+++ b/tests/st10f269/write/ok_1B
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/st10f269/write/ok_24K b/tests/st10f269/write/ok_24K
new file mode 100755
index 0000000..96bf91e
--- /dev/null
+++ b/tests/st10f269/write/ok_24K
Binary files differ
diff --git a/tests/st10f269/write/ok_24K_1B b/tests/st10f269/write/ok_24K_1B
new file mode 100755
index 0000000..883e4d5
--- /dev/null
+++ b/tests/st10f269/write/ok_24K_1B
Binary files differ
diff --git a/tests/st10f269/write/ok_32K b/tests/st10f269/write/ok_32K
new file mode 100755
index 0000000..acec7cb
--- /dev/null
+++ b/tests/st10f269/write/ok_32K
Binary files differ
diff --git a/tests/st10f269/write/ok_32K_1B b/tests/st10f269/write/ok_32K_1B
new file mode 100755
index 0000000..a6415e4
--- /dev/null
+++ b/tests/st10f269/write/ok_32K_1B
Binary files differ
diff --git a/tests/st10f269/write/ok_64K b/tests/st10f269/write/ok_64K
new file mode 100755
index 0000000..a8453c3
--- /dev/null
+++ b/tests/st10f269/write/ok_64K
Binary files differ
diff --git a/tests/st10f269/write/ok_64K_1B b/tests/st10f269/write/ok_64K_1B
new file mode 100755
index 0000000..e7f7433
--- /dev/null
+++ b/tests/st10f269/write/ok_64K_1B
Binary files differ
diff --git a/tests/st10f269/write/ok_ones b/tests/st10f269/write/ok_ones
new file mode 100755
index 0000000..7145947
--- /dev/null
+++ b/tests/st10f269/write/ok_ones
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/st10f269/write/random b/tests/st10f269/write/random
new file mode 100755
index 0000000..c362624
--- /dev/null
+++ b/tests/st10f269/write/random
Binary files differ
diff --git a/tests/st10f269/write/zeros b/tests/st10f269/write/zeros
new file mode 100755
index 0000000..6d23118
--- /dev/null
+++ b/tests/st10f269/write/zeros
Binary files differ
diff --git a/tests/write.cmake b/tests/write.cmake
new file mode 100755
index 0000000..0a164f5
--- /dev/null
+++ b/tests/write.cmake
@@ -0,0 +1,11 @@
+include (${TestFunctions})
+
+set (TestArgs "write ${TestConfigOptions} ${TestArgs} ${TestFile}")
+set (ReadArgs "read ${TestConfigOptions} write_read.bin")
+
+exec_test ("${TestArgs}" ${TestExitCode})
+
+if (NOT "${TestFile}" STREQUAL "" AND NOT "${TestBlessedFile}" STREQUAL "")
+ exec_test ("${ReadArgs}" 0)
+ compare_files (write_read.bin ${TestBlessedFile})
+endif ()
diff --git a/utils/xd/CMakeLists.txt b/utils/xd/CMakeLists.txt
new file mode 100755
index 0000000..83a6de9
--- /dev/null
+++ b/utils/xd/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required (VERSION 3.3)
+project (xd)
+
+add_compile_options (-Wall -Werror -pedantic -g)
+add_executable (xd xd.c)
diff --git a/utils/xd/xd.c b/utils/xd/xd.c
new file mode 100755
index 0000000..5089e30
--- /dev/null
+++ b/utils/xd/xd.c
@@ -0,0 +1,542 @@
+/*
+
+ Extended dump and load utility
+
+ by John Walker
+ http://www.fourmilab.ch/
+
+ This program is in the public domain.
+
+*/
+
+#define Version \
+ "1.3 -- September 2000"
+
+
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#ifdef _WIN32
+#include <fcntl.h>
+#include <io.h>
+#endif
+
+#define FALSE 0
+#define TRUE 1
+#define UPPERCASE_LABEL_LENGTH 128
+
+#define EOS '\0'
+
+static char addrformat[80] = "%6X";
+static char scanaddr[80] = "%lx%c";
+
+static char dataformat1[80] = "%02X";
+static char scandata[80] = "%x%n%c";
+
+static int bytesperline = 16, doublechar = FALSE,
+ dflen = 2, loading = FALSE, streaming = FALSE;
+static unsigned long fileaddr;
+static unsigned char lineecho[32];
+
+/* OUTLINE -- Edit a line of binary data into the selected output
+ format. */
+
+static void outline(out, dat, len)
+ FILE *out;
+ unsigned char *dat;
+ int len;
+{
+ char oline[132];
+ int i;
+
+ sprintf(oline, addrformat, fileaddr);
+ strcat(oline, ":");
+ for (i = 0; i < len; i++) {
+ char outedit[80];
+
+ sprintf(outedit, dataformat1, dat[i]);
+ strcat(oline, (i == (bytesperline / 2)) ? " " : " ");
+ strcat(oline, outedit);
+ }
+
+ if (doublechar) {
+ char oc[2];
+ int shortfall = ((bytesperline - len) * (dflen + 1)) +
+ (len <= (bytesperline / 2) ? 1 : 0);
+
+ while (shortfall-- > 0) {
+ strcat(oline, " ");
+ }
+ oc[1] = EOS;
+ strcat(oline, " | ");
+ for (i = 0; i < len; i++) {
+ int b = dat[i];
+
+ /* Map non-printing characters to "." according to the
+ definitions for ISO 8859/1 Latin-1. */
+
+ if ((b < ' ') || (b > '~' && b < 160)) {
+ b = '.';
+ }
+
+ /* Many existing systems which support Latin-1 lack
+ a definition for character 160, the non-breaking
+ space. Translate this to a space to avoid
+ confusion. */
+
+ if (b == 160) {
+ b = ' ';
+ }
+ oc[0] = (char) b;
+ strcat(oline, oc);
+ }
+ }
+ strcat(oline, "\n");
+ fputs(oline, out);
+}
+
+/* INTERPLINE -- Interpret a line of input. */
+
+static int interpline(line, lineno, out)
+ char *line;
+ int lineno;
+ FILE *out;
+{
+ char *cp = line;
+ char c;
+ unsigned long lfaddr;
+ int gfaddr = FALSE;
+
+ /* Scan the line for a possible alternative format information
+ following a vertical bar and delete it. */
+
+ while ((c = *cp++) != EOS) {
+ if (c == '|') {
+ cp[-1] = EOS;
+ break;
+ }
+ }
+
+ /* Scan the line for a file address terminated by a colon. Save
+ the file address. */
+
+ cp = line;
+
+ while ((c = *cp++) != EOS) {
+ if (c == ':') {
+ int sa;
+ char tchar;
+
+ cp[-1] = EOS;
+ sa = sscanf(line, scanaddr, &lfaddr, &tchar);
+ if (sa == 0 || (sa > 1 && tchar != EOS)) {
+ fprintf(stderr,
+ "Bad file address \"%s\" on line %d:\n",
+ line, lineno);
+ return FALSE;
+ }
+ gfaddr = TRUE;
+ cp[-1] = ':';
+ break;
+ }
+ }
+ if (!gfaddr) {
+ cp = line;
+ }
+ if (!streaming) {
+ if (!gfaddr) {
+ fprintf(stderr, "File address missing on line %d:\n", lineno);
+ fprintf(stderr, "%s\n", line);
+ return FALSE;
+ }
+ if (lfaddr != fileaddr) {
+ fprintf(stderr, "File address sequence error on line %d.\n",
+ lineno);
+ fprintf(stderr, " Expected ");
+ fprintf(stderr, addrformat, fileaddr);
+ fprintf(stderr, ", received ");
+ fprintf(stderr, addrformat, lfaddr);
+ fprintf(stderr, ".\n");
+ fprintf(stderr, "%s\n", line);
+ return FALSE;
+ }
+ }
+
+ while ((c = *cp++) != EOS) {
+ if (!isspace(c)) {
+ int scanl, nscan, dvalue;
+ char termchar;
+
+ if (((scanl = sscanf(cp - 1, scandata, &dvalue, &nscan, &termchar)) == 0) ||
+ (dvalue < 0) || (dvalue > 255) ||
+ (scanl == 2 && !isspace(termchar))) {
+ fprintf(stderr, "Improper value, \"%s\" on line %d:\n",
+ cp - 1, lineno);
+ fprintf(stderr, "%s\n", line);
+ fprintf(stderr, "Bytes must be specified as digits separated by white space.\n");
+ return FALSE;
+ }
+ putc((char) dvalue, out);
+ fileaddr++;
+ cp += nscan;
+ }
+ }
+ return TRUE;
+}
+
+void
+start_header(FILE *out, char *label, char *cppNameSpace)
+{
+ int i, j;
+ char uppercase_label[UPPERCASE_LABEL_LENGTH];
+ /* Uppercase label plus "_HPP" */
+ char include_guard_label[UPPERCASE_LABEL_LENGTH + 4];
+
+ if (cppNameSpace[0] == EOS)
+ cppNameSpace = "UnknownNameSpace";
+
+ /* Construct upper case label from -d option argument. */
+ for (i = strlen(label), j = 0; (j < UPPERCASE_LABEL_LENGTH) && \
+ (i >= 0); i--, j++) {
+ uppercase_label[j] = isalpha(label[j]) ? toupper(label[j]) : label[j];
+ }
+ if (j >= UPPERCASE_LABEL_LENGTH)
+ j--;
+ uppercase_label[j] = '\0';
+ /* Construct include guard label */
+ i = strlen(uppercase_label);
+ strcpy(include_guard_label, uppercase_label);
+ strcpy(include_guard_label + i, "_HPP");
+ /* Print include guard to the output */
+ fprintf(out, "#ifndef %s\n", include_guard_label);
+ fprintf(out, "#define %s 1\n\n", include_guard_label);
+ /* Start namespace */
+ fprintf(out, "namespace %s {\n\n", cppNameSpace);
+}
+
+void
+end_header(FILE *out)
+{
+ fprintf(out, "}\n\n");
+ fprintf(out, "#endif\n");
+}
+
+/* Main program */
+
+int main(argc, argv)
+ int argc; char *argv[];
+{
+ int i, b, bp, cdata = FALSE, tdata = FALSE, f = 0;
+ char *cp, *clabel, *tlabel, *cppNameSpace, opt;
+ FILE *in = stdin, *out = stdout;
+
+ if (argc > 1) {
+ i = strlen(argv[1]);
+ clabel = argv[1] + i;
+ tlabel = cppNameSpace = clabel;
+ }
+
+ for (i = 1; i < argc; i++) {
+ cp = argv[i];
+ if (*cp == '-') {
+ opt = *(++cp);
+ if (islower(opt)) {
+ opt = (char) toupper(opt);
+ }
+ switch (opt) {
+
+ case 'A': /* -Af -- Set address format */
+ opt = cp[1];
+ if (islower(opt)) {
+ opt = (char) toupper(opt);
+ }
+ switch (opt) {
+ case 'D':
+ strcpy(addrformat, "%8d");
+ strcpy(scanaddr, "%ld%c");
+ break;
+
+ case 'H':
+ case 'X':
+ strcpy(addrformat, "%6X");
+ strcpy(scanaddr, "%lx%c");
+ break;
+
+ case 'O':
+ strcpy(addrformat, "%8o");
+ strcpy(scanaddr, "%lo%c");
+ break;
+
+ default:
+ fprintf(stderr,
+ "Invalid address format '%c'. Must be D, H, or O.\n", cp[1]);
+ return 2;
+ }
+ break;
+
+ case 'C':
+ doublechar = TRUE;
+ break;
+
+ case 'D':
+ cdata = TRUE;
+ clabel = cp + 1;
+ break;
+
+ case 'T':
+ tdata = TRUE;
+ tlabel = cp + 1;
+ break;
+
+ case 'P':
+ cppNameSpace = cp + 1;
+ break;
+
+ case 'L':
+ loading = TRUE;
+ break;
+
+ case 'N': /* -Nf -- Set numeric dump format */
+ opt = cp[1];
+ if (islower(opt)) {
+ opt = (char) toupper(opt);
+ }
+ switch (opt) {
+ case 'D':
+ strcpy(dataformat1, "%3d");
+ strcpy(scandata, "%d%n%c");
+ break;
+
+ case 'H':
+ case 'X':
+ strcpy(dataformat1, "%02X");
+ strcpy(scandata, "%x%n%c");
+ break;
+
+ case 'O':
+ strcpy(dataformat1, "%03o");
+ strcpy(scandata, "%o%n%c");
+ break;
+
+ default:
+ fprintf(stderr,
+ "Invalid numeric dump format '%c'. Must be D, H, or O.\n", cp[1]);
+ return 2;
+ }
+ break;
+
+ case 'S':
+ streaming = TRUE;
+ break;
+
+ case '?':
+ case 'H':
+ case 'U':
+ fprintf(stderr, "XD -- Extended dump. Call with xd [input [output]]\n");
+ fprintf(stderr, "\n");
+ fprintf(stderr, " Options:\n");
+ fprintf(stderr, " -af Print addresses in f = Decimal, Hex, or Octal\n");
+ fprintf(stderr, " -c Dump as ISO characters\n");
+ fprintf(stderr, " -dlabel Dump as a C++ header file data declaration\n");
+ fprintf(stderr, " -tlabel Dump as a C++ header containing C++ function that\n");
+ fprintf(stderr, " receives string argument and returns string. Each\n");
+ fprintf(stderr, " line of input file is scanned for a string %%ARG%% which\n");
+ fprintf(stderr, " will be replaced by the function argument. String returned");
+ fprintf(stderr, " holds text content of the input file.");
+ fprintf(stderr, " -pname Name of C++ namespace of header file content\n");
+ fprintf(stderr, " -l Load file from hex dump\n");
+ fprintf(stderr, " -nf Numeric dump in f = Decimal, Hex, or Octal\n");
+ fprintf(stderr, " -s Stream load (don't check file addresses)\n");
+ fprintf(stderr, " -u Print this message\n");
+ fprintf(stderr, "\nBy John Walker, http://www.fourmilab.ch/\n");
+ fprintf(stderr, "\nModified by Jan Sucan, <sucanjan@fit.cvut.cz>\n");
+ fprintf(stderr,"Version %s_mod\n", Version);
+ return 0;
+ }
+ } else {
+ switch (f) {
+ case 0:
+
+ /** Warning! On systems which distinguish text mode and
+ binary I/O (MS-DOS, Macintosh, etc.) the modes in these
+ open statements will have to be made conditional based
+ upon whether an encode or decode is being done, which
+ will have to be specified earlier. But it's worse: if
+ input or output is from standard input or output, the
+ mode will have to be changed on the fly, which is
+ generally system and compiler dependent. 'Twasn't me
+ who couldn't conform to Unix CR/LF convention, so
+ don't ask me to write the code to work around
+ Apple and Microsoft's incompatible standards.
+
+ This file contains code, conditional on _WIN32, which
+ sets binary mode using the method prescribed by
+ Microsoft Visual C 1.52 ("Monkey C"); this may
+ require modification if you're using a different
+ compiler or release of Monkey C. */
+
+ if ((in = fopen(cp, loading ? "r" : "rb")) == NULL) {
+ fprintf(stderr, "Cannot open input file %s\n", cp);
+ return 2;
+ }
+ f++;
+ break;
+
+ case 1:
+ if ((out = fopen(cp, loading ? "wb" : "w")) == NULL) {
+ fprintf(stderr, "Cannot open output file %s\n", cp);
+ return 2;
+ }
+ f++;
+ break;
+
+ default:
+ fprintf(stderr, "Too many file names specified.\n");
+ }
+ }
+ }
+
+#ifdef _WIN32
+
+ /* If input is from standard input and we aren't loading
+ from a dump file, set the input file mode to binary. */
+
+ if ((in == stdin) && (!loading)) {
+ _setmode(_fileno(in), _O_BINARY);
+ }
+
+ /* If output is to standard output and we're loading a
+ binary file from a dump, set the output file mode to
+ binary. */
+
+ if ((out == stdout) && (loading)) {
+ _setmode(_fileno(out), _O_BINARY);
+ }
+#endif
+
+ bp = 0;
+ fileaddr = 0;
+
+ if (loading) {
+ char in_line[256];
+ int lineno = 0;
+
+ while (fgets(in_line, (sizeof in_line) - 2, in)) {
+ lineno++;
+ if (!interpline(in_line, lineno, out)) {
+ fclose(out);
+ return 2;
+ }
+ }
+ } else {
+ if (cdata) {
+ char cout[80];
+ int byte_count = 0;
+ char *label = (clabel[0] == EOS) ? "xd_data" : clabel;
+
+ start_header (out, label, cppNameSpace);
+
+ fprintf(out, "uint8_t %s[] = {\n", label);
+ strcpy(cout, " ");
+
+ while ((b = getc(in)) != EOF) {
+ if (strlen(cout) > 72) {
+ fprintf(out, "%s\n", cout);
+ strcpy(cout, " ");
+ }
+ sprintf(cout + strlen(cout), "%d,", b);
+ byte_count++;
+ }
+ if (strlen(cout) > 4) {
+ cout[strlen(cout) - 1] = EOS; /* Strip trailing comma */
+ fprintf(out, "%s\n", cout);
+ }
+ fprintf(out, "};\n\n");
+ fprintf(out, "const size_t %s_length = %d;\n\n", label, byte_count);
+ /* Close namespace */
+ end_header(out);
+ fclose(out);
+ } else if (tdata) {
+ int b, c;
+ char *label = (tlabel[0] == EOS) ? "xd_text" : tlabel;
+ int lineStarted = FALSE;
+ int buf_i = 0;
+ char buf[6]; /* Buffer for scanning for %ARG% string */
+
+ start_header (out, label, cppNameSpace);
+
+ fprintf(out, "std::string\n");
+ fprintf(out, "getText(const std::string & arg)\n");
+ fprintf(out, "{\n");
+ fprintf(out, " std::ostringstream os;\n\n");
+
+ while ((b = getc(in)) != EOF) {
+ if (!lineStarted) {
+ fprintf(out, " os << \"");
+ lineStarted = TRUE;
+ }
+
+ if ((b != '\r') && (b != '\n')) {
+ /* Printable character */
+ if ((b == '%') && (buf_i == 0)) {
+ buf[buf_i++] = b;
+ } else if ((b == '%') && (buf_i >= 4)) {
+ buf[buf_i] = '\0';
+ if (!strcmp(buf, "%ARG")) {
+ /* We have %ARG% string on the line */
+ fprintf(out, "\" << arg << \"");
+ } else {
+ /* We do not have the string */
+ fprintf(out, "%s%c", buf, b);
+ }
+ buf_i = 0;
+ } else if (buf_i > 0) {
+ buf[buf_i++] = b;
+ if (buf_i >= 5) {
+ buf[buf_i] = '\0';
+ fprintf(out, "%s", buf);
+ buf_i = 0;
+ }
+ } else {
+ fprintf(out, "%c", b);
+ }
+ } else {
+ /* End of line on first occurence of CR or LF */
+ if (buf_i > 0) {
+ buf[buf_i] = '\0';
+ fprintf(out, "%s", buf);
+ buf_i = 0;
+ }
+ fprintf(out, "\" << std::endl;\n");
+ c = getc(in);
+ if (!((b == '\r') && (c == '\n')) && !((b == '\n') && (c == '\r')))
+ ungetc(c, in);
+ lineStarted = FALSE;
+ }
+ }
+ /* Empty buffer, if there are some cached characters */
+ if (buf_i > 0) {
+ buf[buf_i] = '\0';
+ fprintf(out, "%s", buf);
+ }
+ fprintf(out, "\n return os.str();\n}\n\n");
+ /* Close namespace */
+ end_header(out);
+ fclose(out);
+ } else {
+ while ((b = getc(in)) != EOF) {
+ if (bp >= bytesperline) {
+ outline(out, lineecho, bp);
+ bp = 0;
+ fileaddr += bytesperline;
+ }
+ lineecho[bp++] = (char) b;
+ }
+
+ if (bp > 0) {
+ outline(out, lineecho, bp);
+ }
+ }
+ }
+ return 0;
+}