From 78663fbb63043695bfcbda03ab94da58cfce4477 Mon Sep 17 00:00:00 2001
From: schystia <schystia@e4d10518-288a-426b-ba36-e453799dee6f>
Date: Thu, 22 Oct 2015 14:53:21 +0000
Subject: [PATCH] trunk deleted

git-svn-id: https://svnsrv.desy.de/desy/MSK_PROJECTS/other/Fuse-Relay-Board/MCU_Firmware/trunk@1375 e4d10518-288a-426b-ba36-e453799dee6f
---
 FanBoard/FanControlBoard.atsln                |   20 -
 .../FanControlBoard/Debug/FanControlBoard.hex |  102 --
 FanBoard/FanControlBoard/Debug/src/ADC.d      |   54 -
 .../src/ASF/common/boards/user_board/init.d   |   78 --
 .../FanControlBoard/Debug/src/TWI_Slave.d     |   55 -
 FanBoard/FanControlBoard/Debug/src/main.d     |   68 -
 .../FanControlBoard/Debug/src/port_init.d     |   54 -
 FanBoard/FanControlBoard/Debug/src/timer.d    |   46 -
 .../FanControlBoard/FanControlBoard.cproj     |  289 ----
 FanBoard/FanControlBoard/src/ADC.c            |   54 -
 FanBoard/FanControlBoard/src/ADC.h            |   18 -
 .../src/ASF/common/boards/board.h             |  383 -----
 .../src/ASF/common/boards/user_board/init.c   |   18 -
 .../ASF/common/boards/user_board/user_board.h |   37 -
 .../src/ASF/common/utils/interrupt.h          |  139 --
 .../common/utils/interrupt/interrupt_avr8.h   |  145 --
 .../src/ASF/common/utils/make/Makefile.avr.in |  483 -------
 .../src/ASF/common/utils/parts.h              | 1242 -----------------
 .../src/ASF/mega/utils/assembler.h            |  156 ---
 .../src/ASF/mega/utils/assembler/gas.h        |  121 --
 .../src/ASF/mega/utils/compiler.h             |  361 -----
 .../src/ASF/mega/utils/preprocessor/mrepeat.h |  335 -----
 .../mega/utils/preprocessor/preprocessor.h    |   51 -
 .../src/ASF/mega/utils/preprocessor/stringz.h |   81 --
 .../src/ASF/mega/utils/preprocessor/tpaste.h  |  101 --
 .../src/ASF/mega/utils/progmem.h              |   99 --
 .../src/ASF/mega/utils/status_codes.h         |  106 --
 FanBoard/FanControlBoard/src/TWI_Slave.c      |  359 -----
 FanBoard/FanControlBoard/src/TWI_Slave.h      |  146 --
 .../src/__Previews/TWI_Slave.hPreview         |   14 -
 FanBoard/FanControlBoard/src/asf.h            |   71 -
 .../FanControlBoard/src/config/conf_board.h   |   11 -
 FanBoard/FanControlBoard/src/main.c           |   93 --
 FanBoard/FanControlBoard/src/port_init.c      |  106 --
 FanBoard/FanControlBoard/src/port_init.h      |   42 -
 FanBoard/FanControlBoard/src/timer.c          |   49 -
 FanBoard/FanControlBoard/src/timer.h          |   20 -
 37 files changed, 5607 deletions(-)
 delete mode 100644 FanBoard/FanControlBoard.atsln
 delete mode 100644 FanBoard/FanControlBoard/Debug/FanControlBoard.hex
 delete mode 100644 FanBoard/FanControlBoard/Debug/src/ADC.d
 delete mode 100644 FanBoard/FanControlBoard/Debug/src/ASF/common/boards/user_board/init.d
 delete mode 100644 FanBoard/FanControlBoard/Debug/src/TWI_Slave.d
 delete mode 100644 FanBoard/FanControlBoard/Debug/src/main.d
 delete mode 100644 FanBoard/FanControlBoard/Debug/src/port_init.d
 delete mode 100644 FanBoard/FanControlBoard/Debug/src/timer.d
 delete mode 100644 FanBoard/FanControlBoard/FanControlBoard.cproj
 delete mode 100644 FanBoard/FanControlBoard/src/ADC.c
 delete mode 100644 FanBoard/FanControlBoard/src/ADC.h
 delete mode 100644 FanBoard/FanControlBoard/src/ASF/common/boards/board.h
 delete mode 100644 FanBoard/FanControlBoard/src/ASF/common/boards/user_board/init.c
 delete mode 100644 FanBoard/FanControlBoard/src/ASF/common/boards/user_board/user_board.h
 delete mode 100644 FanBoard/FanControlBoard/src/ASF/common/utils/interrupt.h
 delete mode 100644 FanBoard/FanControlBoard/src/ASF/common/utils/interrupt/interrupt_avr8.h
 delete mode 100644 FanBoard/FanControlBoard/src/ASF/common/utils/make/Makefile.avr.in
 delete mode 100644 FanBoard/FanControlBoard/src/ASF/common/utils/parts.h
 delete mode 100644 FanBoard/FanControlBoard/src/ASF/mega/utils/assembler.h
 delete mode 100644 FanBoard/FanControlBoard/src/ASF/mega/utils/assembler/gas.h
 delete mode 100644 FanBoard/FanControlBoard/src/ASF/mega/utils/compiler.h
 delete mode 100644 FanBoard/FanControlBoard/src/ASF/mega/utils/preprocessor/mrepeat.h
 delete mode 100644 FanBoard/FanControlBoard/src/ASF/mega/utils/preprocessor/preprocessor.h
 delete mode 100644 FanBoard/FanControlBoard/src/ASF/mega/utils/preprocessor/stringz.h
 delete mode 100644 FanBoard/FanControlBoard/src/ASF/mega/utils/preprocessor/tpaste.h
 delete mode 100644 FanBoard/FanControlBoard/src/ASF/mega/utils/progmem.h
 delete mode 100644 FanBoard/FanControlBoard/src/ASF/mega/utils/status_codes.h
 delete mode 100644 FanBoard/FanControlBoard/src/TWI_Slave.c
 delete mode 100644 FanBoard/FanControlBoard/src/TWI_Slave.h
 delete mode 100644 FanBoard/FanControlBoard/src/__Previews/TWI_Slave.hPreview
 delete mode 100644 FanBoard/FanControlBoard/src/asf.h
 delete mode 100644 FanBoard/FanControlBoard/src/config/conf_board.h
 delete mode 100644 FanBoard/FanControlBoard/src/main.c
 delete mode 100644 FanBoard/FanControlBoard/src/port_init.c
 delete mode 100644 FanBoard/FanControlBoard/src/port_init.h
 delete mode 100644 FanBoard/FanControlBoard/src/timer.c
 delete mode 100644 FanBoard/FanControlBoard/src/timer.h

diff --git a/FanBoard/FanControlBoard.atsln b/FanBoard/FanControlBoard.atsln
deleted file mode 100644
index 0440eb1..0000000
--- a/FanBoard/FanControlBoard.atsln
+++ /dev/null
@@ -1,20 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Atmel Studio Solution File, Format Version 11.00
-Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "FanControlBoard", "FanControlBoard\FanControlBoard.cproj", "{C260CBCB-BB2F-4E0B-AC93-5E0B05CE2528}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|AVR = Debug|AVR
-		Release|AVR = Release|AVR
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{C260CBCB-BB2F-4E0B-AC93-5E0B05CE2528}.Debug|AVR.ActiveCfg = Debug|AVR
-		{C260CBCB-BB2F-4E0B-AC93-5E0B05CE2528}.Debug|AVR.Build.0 = Debug|AVR
-		{C260CBCB-BB2F-4E0B-AC93-5E0B05CE2528}.Release|AVR.ActiveCfg = Release|AVR
-		{C260CBCB-BB2F-4E0B-AC93-5E0B05CE2528}.Release|AVR.Build.0 = Release|AVR
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/FanBoard/FanControlBoard/Debug/FanControlBoard.hex b/FanBoard/FanControlBoard/Debug/FanControlBoard.hex
deleted file mode 100644
index b42839c..0000000
--- a/FanBoard/FanControlBoard/Debug/FanControlBoard.hex
+++ /dev/null
@@ -1,102 +0,0 @@
-:1000000028C042C041C040C03FC03EC03DC03CC00F
-:100010003BC03AC039C0DAC037C036C035C034C082
-:1000200033C032C031C030C02FC02EC02DC02CC054
-:1000300062C12AC079C238C22BC2ACC2AFC2B4C23C
-:10004000B9C2CAC2C9C2C8C2C7C2C6C2C5C2C4C276
-:10005000BBC211241FBECFEFD4E0DEBFCDBF11E085
-:10006000A0E0B1E0EAE3F6E002C005900D92AA300C
-:10007000B107D9F721E0AAE0B1E001C01D92A83292
-:10008000B207E1F7BCD2D7C2BBCFF894ECE7F0E0FF
-:100090008081806C8083EAE7F0E0808186688083DD
-:1000A00010927B00EEE7F0E0808187608083789497
-:1000B0000895ECE7F0E09081907F892B80838AE1BE
-:1000C0008A95F1F700C0EAE7F0E0808180648083E0
-:1000D000808184FFFDCFEAE7F0E08081806180834A
-:1000E00080917800909179000895CF93DF93D82F75
-:1000F00010920B0110920A0160910001662391F0A9
-:10010000C0E08D2FD6DF20910A0130910B01820FC4
-:10011000931F90930B0180930A01CF5F60910001C0
-:10012000C61778F370E080910A0190910B016FD2AD
-:10013000CB01DF91CF91089580930001089584B1A0
-:10014000836084B985B18C7F85B93B9A439A8FEFE0
-:100150008AB91BB80895813419F0823421F00895CA
-:10016000637064B908956AB90895823439F08334AC
-:1001700039F0813439F4637065B908956BB9089525
-:10018000687068B90895823431F0833431F0813475
-:1001900031F485B108958BB1089588B1089580E058
-:1001A0000895F8941092800083E08093810082E1AA
-:1001B0009AE7909389008093880082E080936F0093
-:1001C0001092850010928400789408951F920F92E7
-:1001D0000FB60F9211241F932F933F934F935F936A
-:1001E0006F937F938F939F93AF93BF93CF93DF933F
-:1001F000EF93FF931092850010928400809101018B
-:10020000909102019C01215031092830310530F4D0
-:100210003093020120930101439A0BC0439846D0CA
-:1002200008C0812F62DF899399931F5F1330C9F74C
-:1002300004C0C6E1D1E010E0F4CFFF91EF91DF916F
-:10024000CF91BF91AF919F918F917F916F915F916E
-:100250004F913F912F911F910F900FBE0F901F90C4
-:100260001895F8948093BA0084E08093BC001092B3
-:100270001E017894089560931F01662359F0A82FFA
-:10028000B92F80E291E0FC012D9121932E2F281BA4
-:100290002617D0F310921C0188EF8093090185EC9A
-:1002A0008093BC0081E080931E01089510921C0190
-:1002B00088EF8093090185EC8093BC0010921E01A9
-:1002C000089520911C0120FF12C0662359F024E2FA
-:1002D00031E0A82FB92FF90181918D938E2F821BC8
-:1002E0008617D0F3ECE1F1E080818D7F80838091EF
-:1002F0001C01817008951F920F920FB60F92112466
-:100300002F933F934F935F936F937F938F939F931D
-:10031000AF93BF93CF93DF93EF93FF938091B90097
-:10032000887F803909F469C090F4803709F452C09D
-:1003300038F4882309F47FC0803609F450C087C0A0
-:10034000803809F45AC0883809F475C080C0883AEA
-:1003500081F038F4883909F46EC0803A09F465C038
-:1003600076C0803C09F1883C09F465C0883B41F0C7
-:100370006EC0ECE1F1E080818860808310920D0115
-:10038000E0910D01F0E0E05EFE4F80818093BB00C4
-:1003900080910D018F5F80930D0185EC8093BC00EF
-:1003A00081E080931E0118C190910D0180911F0181
-:1003B000981306C0ECE1F1E080818160808304C085
-:1003C0008091B9008093090185EC8093BC00109264
-:1003D0001E0146C0ECE1F1E0808184608083ECE1A5
-:1003E000F1E080818260808310920C0185EC809323
-:1003F000BC0081E080931E01EFC0E0910C0181E020
-:100400008E0F80930C018091BB00F0E0EC5DFE4FFD
-:100410008083ECE1F1E080818160808385EC8093D2
-:10042000BC0081E080931E01D7C085EC8093BC00A6
-:1004300010921E0115C08091B9008093090180E9D6
-:100440008093BC0080911E01882351F0C5C080912B
-:10045000B9008093090185EC8093BC0010921E01C5
-:1004600080911C0180FFB7C080911C0181FFB4C046
-:1004700063E082E191E025DF8091120190E0FC01D0
-:10048000B297EF30F10508F0A7C0E65EFF4F099480
-:100490001092120181E080930E0110920F0162E030
-:1004A0008EE091E0E8DE98C010921201E3E0F1E006
-:1004B000AEE0B1E049E051E0808191819C012F5F85
-:1004C0003F4F219331938D93E417F507A9F780915E
-:1004D0000501909106019595879595958795959538
-:1004E000879595958795282F20738091030190918A
-:1004F00004019595879595958795807C282B80910B
-:10050000070190910801082E892F000C881F990B74
-:10051000000C881F991F8C70822B8093110164E05E
-:100520008EE091E0A8DE58C0A6E1B1E08C91809306
-:100530000E01C8E1D1E0888180930F01EAE1F1E08A
-:1005400080818093100188819981959587959595F3
-:1005500087959595879595958795282F20738D91EB
-:100560009C919595879595958795807C282B808182
-:100570009181082E892F000C881F990B000C881F71
-:10058000991F8C70822B8093110164E08EE091E0C2
-:1005900072DE22C080911301CFDD1EC06091140174
-:1005A00080911301D8DD18C060911401809113016E
-:1005B000DCDD12C080911301E6DD80930E0161E065
-:1005C0008EE091E058DE08C088E090E09093020150
-:1005D0008093010101C06ADEFF91EF91DF91CF911D
-:1005E000BF91AF919F918F917F916F915F914F914B
-:1005F0003F912F910F900FBE0F901F9018959FDD88
-:10060000D0DD43DD8CE02DDE789450DEFFCFAA1BD9
-:10061000BB1B51E107C0AA1FBB1FA617B70710F0ED
-:10062000A61BB70B881F991F5A95A9F7809590951F
-:0A063000BC01CD010895F894FFCF3E
-:0A063A001E0800E803E903EA03F8D4
-:00000001FF
diff --git a/FanBoard/FanControlBoard/Debug/src/ADC.d b/FanBoard/FanControlBoard/Debug/src/ADC.d
deleted file mode 100644
index c939357..0000000
--- a/FanBoard/FanControlBoard/Debug/src/ADC.d
+++ /dev/null
@@ -1,54 +0,0 @@
-src/ADC.d src/ADC.o: ../src/ADC.c \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h \
- ../src/port_init.h ../src/timer.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iom88pa.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
- ../src/ADC.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h:
-
-../src/port_init.h:
-
-../src/timer.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iom88pa.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
-
-../src/ADC.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h:
diff --git a/FanBoard/FanControlBoard/Debug/src/ASF/common/boards/user_board/init.d b/FanBoard/FanControlBoard/Debug/src/ASF/common/boards/user_board/init.d
deleted file mode 100644
index 177a451..0000000
--- a/FanBoard/FanControlBoard/Debug/src/ASF/common/boards/user_board/init.d
+++ /dev/null
@@ -1,78 +0,0 @@
-src/ASF/common/boards/user_board/init.d \
- src/ASF/common/boards/user_board/init.o: \
- ../src/ASF/common/boards/user_board/init.c ../src/asf.h \
- ../src/ASF/common/boards/user_board/user_board.h \
- ../src/config/conf_board.h ../src/ASF/common/boards/board.h \
- ../src/ASF/mega/utils/compiler.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iom88pa.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdbool.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdlib.h \
- ../src/ASF/common/utils/parts.h ../src/ASF/common/utils/interrupt.h \
- ../src/ASF/common/utils/interrupt/interrupt_avr8.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
- ../src/ASF/mega/utils/progmem.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\pgmspace.h \
- ../src/ASF/mega/utils/status_codes.h
-
-../src/asf.h:
-
-../src/ASF/common/boards/user_board/user_board.h:
-
-../src/config/conf_board.h:
-
-../src/ASF/common/boards/board.h:
-
-../src/ASF/mega/utils/compiler.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iom88pa.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdbool.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdlib.h:
-
-../src/ASF/common/utils/parts.h:
-
-../src/ASF/common/utils/interrupt.h:
-
-../src/ASF/common/utils/interrupt/interrupt_avr8.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
-
-../src/ASF/mega/utils/progmem.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\pgmspace.h:
-
-../src/ASF/mega/utils/status_codes.h:
diff --git a/FanBoard/FanControlBoard/Debug/src/TWI_Slave.d b/FanBoard/FanControlBoard/Debug/src/TWI_Slave.d
deleted file mode 100644
index f9c12fe..0000000
--- a/FanBoard/FanControlBoard/Debug/src/TWI_Slave.d
+++ /dev/null
@@ -1,55 +0,0 @@
-src/TWI_Slave.d src/TWI_Slave.o: ../src/TWI_Slave.c ../src/TWI_slave.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iom88pa.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h \
- ../src/port_init.h ../src/timer.h ../src/ADC.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h
-
-../src/TWI_slave.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iom88pa.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h:
-
-../src/port_init.h:
-
-../src/timer.h:
-
-../src/ADC.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h:
diff --git a/FanBoard/FanControlBoard/Debug/src/main.d b/FanBoard/FanControlBoard/Debug/src/main.d
deleted file mode 100644
index 435108d..0000000
--- a/FanBoard/FanControlBoard/Debug/src/main.d
+++ /dev/null
@@ -1,68 +0,0 @@
-src/main.d src/main.o: ../src/main.c \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdio.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdarg.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\string.h \
- ../src/port_init.h ../src/timer.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iom88pa.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
- ../src/ADC.h ../src/TWI_slave.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdio.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdarg.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\string.h:
-
-../src/port_init.h:
-
-../src/timer.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iom88pa.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
-
-../src/ADC.h:
-
-../src/TWI_slave.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h:
diff --git a/FanBoard/FanControlBoard/Debug/src/port_init.d b/FanBoard/FanControlBoard/Debug/src/port_init.d
deleted file mode 100644
index a19c35a..0000000
--- a/FanBoard/FanControlBoard/Debug/src/port_init.d
+++ /dev/null
@@ -1,54 +0,0 @@
-src/port_init.d src/port_init.o: ../src/port_init.c \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdio.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdarg.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\string.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iom88pa.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h \
- ../src/port_init.h ../src/timer.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdio.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdarg.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\string.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iom88pa.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h:
-
-../src/port_init.h:
-
-../src/timer.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
diff --git a/FanBoard/FanControlBoard/Debug/src/timer.d b/FanBoard/FanControlBoard/Debug/src/timer.d
deleted file mode 100644
index 75e2959..0000000
--- a/FanBoard/FanControlBoard/Debug/src/timer.d
+++ /dev/null
@@ -1,46 +0,0 @@
-src/timer.d src/timer.o: ../src/timer.c ../src/timer.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iom88pa.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h \
- c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
- ../src/port_init.h ../src/TWI_Slave.h ../src/ADC.h
-
-../src/timer.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iom88pa.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h:
-
-c:\programme\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
-
-../src/port_init.h:
-
-../src/TWI_Slave.h:
-
-../src/ADC.h:
diff --git a/FanBoard/FanControlBoard/FanControlBoard.cproj b/FanBoard/FanControlBoard/FanControlBoard.cproj
deleted file mode 100644
index c3a9bde..0000000
--- a/FanBoard/FanControlBoard/FanControlBoard.cproj
+++ /dev/null
@@ -1,289 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectVersion>6.2</ProjectVersion>
-    <ToolchainName>com.Atmel.AVRGCC8.C</ToolchainName>
-    <ProjectGuid>{c260cbcb-bb2f-4e0b-ac93-5e0b05ce2528}</ProjectGuid>
-    <avrdevice>atmega88pa</avrdevice>
-    <avrdeviceseries>mega</avrdeviceseries>
-    <OutputType>Executable</OutputType>
-    <Language>C</Language>
-    <OutputFileName>$(MSBuildProjectName)</OutputFileName>
-    <OutputFileExtension>.elf</OutputFileExtension>
-    <OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
-    <AssemblyName>FanControlBoard</AssemblyName>
-    <Name>FanControlBoard</Name>
-    <RootNamespace>FanControlBoard</RootNamespace>
-    <ToolchainFlavour>Native</ToolchainFlavour>
-    <KeepTimersRunning>true</KeepTimersRunning>
-    <OverrideVtor>false</OverrideVtor>
-    <CacheFlash>true</CacheFlash>
-    <ProgFlashFromRam>true</ProgFlashFromRam>
-    <RamSnippetAddress>0x20000000</RamSnippetAddress>
-    <UncachedRange />
-    <preserveEEPROM>true</preserveEEPROM>
-    <OverrideVtorValue>exception_table</OverrideVtorValue>
-    <BootSegment>2</BootSegment>
-    <eraseonlaunchrule>1</eraseonlaunchrule>
-    <AsfFrameworkConfig>
-      <framework-data>
-  <options>
-    <option id="common.boards" value="Add" config="" content-id="Atmel.ASF" />
-  </options>
-  <configurations />
-  <files>
-    <file path="src/main.c" framework="" version="" source="common/applications/user_application/main.c" changed="False" content-id="Atmel.ASF" />
-    <file path="src/config/conf_board.h" framework="" version="" source="common/applications/user_application/user_board/config/conf_board.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/boards/board.h" framework="" version="" source="common/boards/board.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/boards/user_board/init.c" framework="" version="" source="common/boards/user_board/init.c" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/boards/user_board/user_board.h" framework="" version="" source="common/boards/user_board/user_board.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/utils/interrupt.h" framework="" version="" source="common/utils/interrupt.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/utils/interrupt/interrupt_avr8.h" framework="" version="" source="common/utils/interrupt/interrupt_avr8.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/utils/make/Makefile.avr.in" framework="" version="" source="common/utils/make/Makefile.avr.in" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/utils/parts.h" framework="" version="" source="common/utils/parts.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/mega/utils/assembler.h" framework="" version="" source="mega/utils/assembler.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/mega/utils/assembler/gas.h" framework="" version="" source="mega/utils/assembler/gas.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/mega/utils/compiler.h" framework="" version="" source="mega/utils/compiler.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/mega/utils/preprocessor/mrepeat.h" framework="" version="" source="mega/utils/preprocessor/mrepeat.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/mega/utils/preprocessor/preprocessor.h" framework="" version="" source="mega/utils/preprocessor/preprocessor.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/mega/utils/preprocessor/stringz.h" framework="" version="" source="mega/utils/preprocessor/stringz.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/mega/utils/preprocessor/tpaste.h" framework="" version="" source="mega/utils/preprocessor/tpaste.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/mega/utils/progmem.h" framework="" version="" source="mega/utils/progmem.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/mega/utils/status_codes.h" framework="" version="" source="mega/utils/status_codes.h" changed="False" content-id="Atmel.ASF" />
-  </files>
-  <documentation help="http://asf.atmel.com/docs/3.19.0/common.applications.user_application.user_board.mega/html/index.html" />
-  <offline-documentation help="" />
-  <dependencies>
-    <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.6.0" />
-  </dependencies>
-  <project id="common.applications.user_application.user_board.mega" value="Add" config="" content-id="Atmel.ASF" />
-  <board id="board.user_board.mega" value="Add" config="" content-id="Atmel.ASF" />
-</framework-data>
-    </AsfFrameworkConfig>
-    <avrtool>com.atmel.avrdbg.tool.jtagice3plus</avrtool>
-    <com_atmel_avrdbg_tool_jtagice3plus>
-      <ToolOptions>
-        <InterfaceProperties>
-          <IspClock>125000</IspClock>
-          <DebugWireClockDiv>0</DebugWireClockDiv>
-        </InterfaceProperties>
-        <InterfaceName>debugWIRE</InterfaceName>
-      </ToolOptions>
-      <ToolType>com.atmel.avrdbg.tool.jtagice3plus</ToolType>
-      <ToolNumber>J30200023049</ToolNumber>
-      <ToolName>JTAGICE3</ToolName>
-    </com_atmel_avrdbg_tool_jtagice3plus>
-    <avrtoolinterface>debugWIRE</avrtoolinterface>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
-    <ToolchainSettings>
-      <AvrGcc>
-        <avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
-        <avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
-        <avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
-        <avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
-        <avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
-        <avrgcc.compiler.symbols.DefSymbols>
-          <ListValues>
-            <Value>NDEBUG</Value>
-            <Value>BOARD=USER_BOARD</Value>
-          </ListValues>
-        </avrgcc.compiler.symbols.DefSymbols>
-        <avrgcc.compiler.directories.IncludePaths>
-          <ListValues>
-            <Value>../common/applications/user_application/user_board/config</Value>
-            <Value>../src/config</Value>
-            <Value>../src/ASF/common/boards</Value>
-            <Value>../src/ASF/mega/utils</Value>
-            <Value>../src/ASF/common/utils</Value>
-            <Value>../src/ASF/mega/utils/preprocessor</Value>
-            <Value>../src</Value>
-            <Value>../src/ASF/common/boards/user_board</Value>
-          </ListValues>
-        </avrgcc.compiler.directories.IncludePaths>
-        <avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
-        <avrgcc.compiler.optimization.OtherFlags>-fdata-sections</avrgcc.compiler.optimization.OtherFlags>
-        <avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
-        <avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
-        <avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
-        <avrgcc.compiler.miscellaneous.OtherFlags>-std=gnu99 -fno-strict-aliasing -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -mrelax</avrgcc.compiler.miscellaneous.OtherFlags>
-        <avrgcc.linker.libraries.Libraries>
-          <ListValues>
-            <Value>libm</Value>
-          </ListValues>
-        </avrgcc.linker.libraries.Libraries>
-        <avrgcc.linker.miscellaneous.LinkerFlags>-Wl,--relax</avrgcc.linker.miscellaneous.LinkerFlags>
-        <avrgcc.assembler.general.AssemblerFlags>-mrelax -DBOARD=USER_BOARD</avrgcc.assembler.general.AssemblerFlags>
-        <avrgcc.assembler.general.IncludePaths>
-          <ListValues>
-            <Value>../common/applications/user_application/user_board/config</Value>
-            <Value>../src/config</Value>
-            <Value>../src/ASF/common/boards</Value>
-            <Value>../src/ASF/mega/utils</Value>
-            <Value>../src/ASF/common/utils</Value>
-            <Value>../src/ASF/mega/utils/preprocessor</Value>
-            <Value>../src</Value>
-            <Value>../src/ASF/common/boards/user_board</Value>
-          </ListValues>
-        </avrgcc.assembler.general.IncludePaths>
-      </AvrGcc>
-    </ToolchainSettings>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
-    <ToolchainSettings>
-      <AvrGcc>
-        <avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
-        <avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
-        <avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
-        <avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
-        <avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
-        <avrgcc.compiler.symbols.DefSymbols>
-          <ListValues>
-            <Value>DEBUG</Value>
-            <Value>BOARD=USER_BOARD</Value>
-          </ListValues>
-        </avrgcc.compiler.symbols.DefSymbols>
-        <avrgcc.compiler.directories.IncludePaths>
-          <ListValues>
-            <Value>../common/applications/user_application/user_board/config</Value>
-            <Value>../src/config</Value>
-            <Value>../src/ASF/common/boards</Value>
-            <Value>../src/ASF/mega/utils</Value>
-            <Value>../src/ASF/common/utils</Value>
-            <Value>../src/ASF/mega/utils/preprocessor</Value>
-            <Value>../src</Value>
-            <Value>../src/ASF/common/boards/user_board</Value>
-          </ListValues>
-        </avrgcc.compiler.directories.IncludePaths>
-        <avrgcc.compiler.optimization.level>Optimize (-O1)</avrgcc.compiler.optimization.level>
-        <avrgcc.compiler.optimization.OtherFlags>-fdata-sections</avrgcc.compiler.optimization.OtherFlags>
-        <avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
-        <avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
-        <avrgcc.compiler.optimization.DebugLevel>Maximum (-g3)</avrgcc.compiler.optimization.DebugLevel>
-        <avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
-        <avrgcc.compiler.warnings.ExtraWarnings>True</avrgcc.compiler.warnings.ExtraWarnings>
-        <avrgcc.compiler.miscellaneous.OtherFlags>-std=gnu99 -fno-strict-aliasing -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -mrelax</avrgcc.compiler.miscellaneous.OtherFlags>
-        <avrgcc.linker.libraries.Libraries>
-          <ListValues>
-            <Value>libm</Value>
-          </ListValues>
-        </avrgcc.linker.libraries.Libraries>
-        <avrgcc.linker.miscellaneous.LinkerFlags>-Wl,--relax</avrgcc.linker.miscellaneous.LinkerFlags>
-        <avrgcc.assembler.general.AssemblerFlags>-mrelax -DBOARD=USER_BOARD</avrgcc.assembler.general.AssemblerFlags>
-        <avrgcc.assembler.general.IncludePaths>
-          <ListValues>
-            <Value>../common/applications/user_application/user_board/config</Value>
-            <Value>../src/config</Value>
-            <Value>../src/ASF/common/boards</Value>
-            <Value>../src/ASF/mega/utils</Value>
-            <Value>../src/ASF/common/utils</Value>
-            <Value>../src/ASF/mega/utils/preprocessor</Value>
-            <Value>../src</Value>
-            <Value>../src/ASF/common/boards/user_board</Value>
-          </ListValues>
-        </avrgcc.assembler.general.IncludePaths>
-        <avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
-      </AvrGcc>
-    </ToolchainSettings>
-  </PropertyGroup>
-  <ItemGroup>
-    <Compile Include="src\ADC.c">
-      <SubType>compile</SubType>
-    </Compile>
-    <Compile Include="src\ADC.h">
-      <SubType>compile</SubType>
-    </Compile>
-    <Compile Include="src\port_init.c">
-      <SubType>compile</SubType>
-    </Compile>
-    <Compile Include="src\port_init.h">
-      <SubType>compile</SubType>
-    </Compile>
-    <Compile Include="src\timer.c">
-      <SubType>compile</SubType>
-    </Compile>
-    <Compile Include="src\timer.h">
-      <SubType>compile</SubType>
-    </Compile>
-    <Compile Include="src\TWI_Slave.c">
-      <SubType>compile</SubType>
-    </Compile>
-    <Compile Include="src\TWI_Slave.h">
-      <SubType>compile</SubType>
-    </Compile>
-    <None Include="src\ASF\common\boards\board.h">
-      <SubType>compile</SubType>
-    </None>
-    <None Include="src\asf.h">
-      <SubType>compile</SubType>
-    </None>
-    <Compile Include="src\ASF\common\boards\user_board\init.c">
-      <SubType>compile</SubType>
-    </Compile>
-    <None Include="src\ASF\common\utils\make\Makefile.avr.in">
-      <SubType>compile</SubType>
-    </None>
-    <None Include="src\ASF\mega\utils\preprocessor\tpaste.h">
-      <SubType>compile</SubType>
-    </None>
-    <None Include="src\ASF\mega\utils\progmem.h">
-      <SubType>compile</SubType>
-    </None>
-    <None Include="src\config\conf_board.h">
-      <SubType>compile</SubType>
-    </None>
-    <None Include="src\ASF\mega\utils\preprocessor\preprocessor.h">
-      <SubType>compile</SubType>
-    </None>
-    <None Include="src\ASF\mega\utils\preprocessor\stringz.h">
-      <SubType>compile</SubType>
-    </None>
-    <None Include="src\ASF\common\utils\interrupt.h">
-      <SubType>compile</SubType>
-    </None>
-    <None Include="src\ASF\mega\utils\compiler.h">
-      <SubType>compile</SubType>
-    </None>
-    <None Include="src\ASF\mega\utils\assembler.h">
-      <SubType>compile</SubType>
-    </None>
-    <None Include="src\ASF\common\utils\parts.h">
-      <SubType>compile</SubType>
-    </None>
-    <None Include="src\ASF\common\utils\interrupt\interrupt_avr8.h">
-      <SubType>compile</SubType>
-    </None>
-    <None Include="src\ASF\mega\utils\preprocessor\mrepeat.h">
-      <SubType>compile</SubType>
-    </None>
-    <None Include="src\ASF\mega\utils\assembler\gas.h">
-      <SubType>compile</SubType>
-    </None>
-    <None Include="src\ASF\common\boards\user_board\user_board.h">
-      <SubType>compile</SubType>
-    </None>
-    <None Include="src\ASF\mega\utils\status_codes.h">
-      <SubType>compile</SubType>
-    </None>
-    <Compile Include="src\main.c">
-      <SubType>compile</SubType>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="src\" />
-    <Folder Include="src\ASF\" />
-    <Folder Include="src\ASF\common\" />
-    <Folder Include="src\ASF\common\boards\" />
-    <Folder Include="src\ASF\common\boards\user_board\" />
-    <Folder Include="src\ASF\common\utils\" />
-    <Folder Include="src\ASF\common\utils\interrupt\" />
-    <Folder Include="src\ASF\common\utils\make\" />
-    <Folder Include="src\ASF\mega\" />
-    <Folder Include="src\ASF\mega\utils\" />
-    <Folder Include="src\ASF\mega\utils\assembler\" />
-    <Folder Include="src\ASF\mega\utils\preprocessor\" />
-    <Folder Include="src\config\" />
-  </ItemGroup>
-  <Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
-</Project>
\ No newline at end of file
diff --git a/FanBoard/FanControlBoard/src/ADC.c b/FanBoard/FanControlBoard/src/ADC.c
deleted file mode 100644
index 9036b36..0000000
--- a/FanBoard/FanControlBoard/src/ADC.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * ADC.c
- *
- * Created: 08.02.2015 15:01:34
- *  Author:  Stanislav Chystiakov (DESY)
- */ 
-#include <stdint.h>
-#include "port_init.h"
-#include "timer.h"
-#include "ADC.h"
-#include <util/delay.h>
-#include <avr/io.h>
-#include <avr/interrupt.h>
-
-uint8_t samplesNum = 30;
-
-void ADC_init(void) {
-	cli();
-	//ADMUX = (1 << ADLAR);									// Write one to ADLAR to left adjust the result.
-	//ADMUX |= (1 << REFS0);								// AVCC with external capacitor at AREF pin
-	ADMUX |= ((1 << REFS0) | (1 << REFS1));					// Internal 1.1V Voltage Reference with external capacitor at AREF pin
-	ADCSRA |= ((1 << ADEN) | (1 << ADPS2) | (1 << ADPS1));	// ADC Prescaler Selections --> CLK/64
-	ADCSRB = 0x00;											// Free Running mode
-	DIDR0 |= (1 << ADC0D) | (1 << ADC1D) | (1 << ADC2D); 	// The digital input buffer on the corresponding ADC pin is disabled
-	sei();
-}
-
-//function receives as argument a channel number and returns ADC input value
-uint16_t ADC_result(unsigned char adcChnl) {
-	//cli(); // this brokes i2c!
-	ADMUX = adcChnl | (ADMUX & 0xF0);						//select channel
-	_delay_us(10);											//delay to stabilize input voltage
-	ADCSRA |= (1 << ADSC);									// start conversion (ADSC = 1)
-	while((ADCSRA & 0x10)==0);								// wait during conversion (ADIF = 1 when conversion complete)
-	ADCSRA |= (1 << ADIF);									//clear ADIF: ADC Interrupt Flag
-	return ADCW;											// ADCW - contains ADCH and ADCL
-	//sei();
-}
-
-//function calculates average ADC value for N samples
-uint16_t ADC_result_average(unsigned char adcChnl) {
-	static uint16_t adcSum;
-	adcSum = 0;
-	
-	for (unsigned char i=0; i < samplesNum; i++)
-	{
-		adcSum += ADC_result(adcChnl);		
-	}
-	return (adcSum / samplesNum);
-}
-
-void setAverage(uint8_t inptVal) {	//Set number of samples
-	samplesNum = inptVal;
-}
\ No newline at end of file
diff --git a/FanBoard/FanControlBoard/src/ADC.h b/FanBoard/FanControlBoard/src/ADC.h
deleted file mode 100644
index 031469b..0000000
--- a/FanBoard/FanControlBoard/src/ADC.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * ADC.h
- *
- * Created: 08.02.2015 15:02:02
- *  Author: Stanislav Chystiakov (DESY)
- */ 
-
-
-#ifndef ADC_H_
-#define ADC_H_
-
-void ADC_init(void);
-uint16_t ADC_result(unsigned char adcChnl);
-uint16_t ADC_result_average(unsigned char adcChnl);
-void setAverage(uint8_t inptVal);
-
-
-#endif /* ADC_H_ */
\ No newline at end of file
diff --git a/FanBoard/FanControlBoard/src/ASF/common/boards/board.h b/FanBoard/FanControlBoard/src/ASF/common/boards/board.h
deleted file mode 100644
index 4de2e81..0000000
--- a/FanBoard/FanControlBoard/src/ASF/common/boards/board.h
+++ /dev/null
@@ -1,383 +0,0 @@
-/**
- * \file
- *
- * \brief Standard board header file.
- *
- * This file includes the appropriate board header file according to the
- * defined board (parameter BOARD).
- *
- * Copyright (c) 2009-2014 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * 3. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * \asf_license_stop
- *
- */
-
-#ifndef _BOARD_H_
-#define _BOARD_H_
-
-/**
- * \defgroup group_common_boards Generic board support
- *
- * The generic board support module includes board-specific definitions
- * and function prototypes, such as the board initialization function.
- *
- * \{
- */
-
-#include "compiler.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/*! \name Base Boards
- */
-//! @{
-#define EVK1100                     1  //!< AT32UC3A EVK1100 board.
-#define EVK1101                     2  //!< AT32UC3B EVK1101 board.
-#define UC3C_EK                     3  //!< AT32UC3C UC3C-EK board.
-#define EVK1104                     4  //!< AT32UC3A3 EVK1104 board.
-#define EVK1105                     5  //!< AT32UC3A EVK1105 board.
-#define STK600_RCUC3L0              6  //!< STK600 RCUC3L0 board.
-#define UC3L_EK                     7  //!< AT32UC3L-EK board.
-#define XPLAIN                      8  //!< ATxmega128A1 Xplain board.
-#define STK600_RC064X              10  //!< ATxmega256A3 STK600 board.
-#define STK600_RC100X              11  //!< ATxmega128A1 STK600 board.
-#define UC3_A3_XPLAINED            13  //!< ATUC3A3 UC3-A3 Xplained board.
-#define UC3_L0_XPLAINED            15  //!< ATUC3L0 UC3-L0 Xplained board.
-#define STK600_RCUC3D              16  //!< STK600 RCUC3D board.
-#define STK600_RCUC3C0             17  //!< STK600 RCUC3C board.
-#define XMEGA_B1_XPLAINED          18  //!< ATxmega128B1 Xplained board.
-#define XMEGA_A1_XPLAINED          19  //!< ATxmega128A1 Xplain-A1 board.
-#define XMEGA_A1U_XPLAINED_PRO     20  //!< ATxmega128A1U XMEGA-A1U Xplained Pro board.
-#define STK600_RCUC3L4             21  //!< ATUCL4 STK600 board
-#define UC3_L0_XPLAINED_BC         22  //!< ATUC3L0 UC3-L0 Xplained board controller board
-#define MEGA1284P_XPLAINED_BC      23  //!< ATmega1284P-Xplained board controller board
-#define STK600_RC044X              24  //!< STK600 with RC044X routing card board.
-#define STK600_RCUC3B0             25  //!< STK600 RCUC3B0 board.
-#define UC3_L0_QT600               26  //!< QT600 UC3L0 MCU board.
-#define XMEGA_A3BU_XPLAINED        27  //!< ATxmega256A3BU Xplained board.
-#define STK600_RC064X_LCDX         28  //!< XMEGAB3 STK600 RC064X LCDX board.
-#define STK600_RC100X_LCDX         29  //!< XMEGAB1 STK600 RC100X LCDX board.
-#define UC3B_BOARD_CONTROLLER      30  //!< AT32UC3B1 board controller for Atmel boards
-#define RZ600                      31  //!< AT32UC3A RZ600 MCU board
-#define SAM3S_EK                   32  //!< SAM3S-EK board.
-#define SAM3U_EK                   33  //!< SAM3U-EK board.
-#define SAM3X_EK                   34  //!< SAM3X-EK board.
-#define SAM3N_EK                   35  //!< SAM3N-EK board.
-#define SAM3S_EK2                  36  //!< SAM3S-EK2 board.
-#define SAM4S_EK                   37  //!< SAM4S-EK board.
-#define STK600_RCUC3A0             38  //!< STK600 RCUC3A0 board.
-#define STK600_MEGA                39  //!< STK600 MEGA board.
-#define MEGA_1284P_XPLAINED        40  //!< ATmega1284P Xplained board.
-#define SAM4S_XPLAINED             41  //!< SAM4S Xplained board.
-#define ATXMEGA128A1_QT600         42  //!< QT600 ATXMEGA128A1 MCU board.
-#define ARDUINO_DUE_X              43  //!< Arduino Due/X board.
-#define STK600_RCUC3L3             44  //!< ATUCL3 STK600 board
-#define SAM4L_EK                   45  //!< SAM4L-EK board.
-#define STK600_MEGA_RF             46  //!< STK600 MEGA RF EVK board.
-#define XMEGA_C3_XPLAINED          47  //!< ATxmega384C3 Xplained board.
-#define STK600_RC032X              48  //!< STK600 with RC032X routing card board.
-#define SAM4S_EK2                  49  //!< SAM4S-EK2 board.
-#define XMEGA_E5_XPLAINED          50  //!< ATxmega32E5 Xplained board.
-#define SAM4E_EK                   51  //!< SAM4E-EK board.
-#define ATMEGA256RFR2_XPLAINED_PRO 52  //!< ATmega256RFR2 Xplained Pro board.
-#define SAM4S_XPLAINED_PRO         53  //!< SAM4S Xplained Pro board.
-#define SAM4L_XPLAINED_PRO         54  //!< SAM4L Xplained Pro board.
-#define ATMEGA256RFR2_ZIGBIT       55  //!< ATmega256RFR2 zigbit
-#define XMEGA_RF233_ZIGBIT         56  //!< ATxmega256A3U with AT86RF233 Zigbit
-#define XMEGA_RF212B_ZIGBIT        57  //!< ATxmega256A3U with AT86RF212B Zigbit
-#define SAM4S_WPIR_RD              58  //!< SAM4S-WPIR-RD board.
-#define SAMD20_XPLAINED_PRO        59  //!< SAM D20 Xplained Pro board
-#define SAM4L8_XPLAINED_PRO        60  //!< SAM4L8 Xplained Pro board.
-#define SAM4N_XPLAINED_PRO         61  //!< SAM4N Xplained Pro board.
-#define XMEGA_A3_REB_CBB           62  //!< XMEGA REB Controller Base board.
-#define ATMEGARFX_RCB              63  //!< RFR2 & RFA1 RCB
-#define SAM4C_EK                   64  //!< SAM4C-EK board.
-#define RCB256RFR2_XPRO            65  //!< RFR2 RCB Xplained Pro board.
-#define SAMG53_XPLAINED_PRO        66  //!< SAMG53 Xplained Pro board.
-#define SAM4CP16BMB                67  //!< SAM4CP16BMB board.
-#define SAM4E_XPLAINED_PRO         68  //!< SAM4E Xplained Pro board.
-#define SAMD21_XPLAINED_PRO        69  //!< SAM D21 Xplained Pro board.
-#define SAMR21_XPLAINED_PRO        70  //!< SAM R21 Xplained Pro board.
-#define SAM4CMP_DB                 71  //!< SAM4CMP demo board.
-#define SAM4CMS_DB                 72  //!< SAM4CMS demo board.
-#define ATPL230AMB                 73  //!< ATPL230AMB board.
-#define SAMD11_XPLAINED_PRO        74  //!< SAM D11 Xplained Pro board.
-#define SIMULATOR_XMEGA_A1         97  //!< Simulator for XMEGA A1 devices
-#define AVR_SIMULATOR_UC3          98  //!< Simulator for the AVR UC3 device family.
-#define USER_BOARD                 99  //!< User-reserved board (if any).
-#define DUMMY_BOARD               100  //!< Dummy board to support board-independent applications (e.g. bootloader)
-//! @}
-
-/*! \name Extension Boards
- */
-//! @{
-#define EXT1102                      1  //!< AT32UC3B EXT1102 board
-#define MC300                        2  //!< AT32UC3 MC300 board
-#define SENSORS_XPLAINED_INERTIAL_1  3  //!< Xplained inertial sensor board 1
-#define SENSORS_XPLAINED_INERTIAL_2  4  //!< Xplained inertial sensor board 2
-#define SENSORS_XPLAINED_PRESSURE_1  5  //!< Xplained pressure sensor board
-#define SENSORS_XPLAINED_LIGHTPROX_1 6  //!< Xplained light & proximity sensor board
-#define SENSORS_XPLAINED_INERTIAL_A1 7  //!< Xplained inertial sensor board "A"
-#define RZ600_AT86RF231              8  //!< AT86RF231 RF board in RZ600
-#define RZ600_AT86RF230B             9  //!< AT86RF230B RF board in RZ600
-#define RZ600_AT86RF212             10  //!< AT86RF212 RF board in RZ600
-#define SENSORS_XPLAINED_BREADBOARD 11  //!< Xplained sensor development breadboard
-#define SECURITY_XPLAINED           12  //!< Xplained ATSHA204 board
-#define USER_EXT_BOARD              99  //!< User-reserved extension board (if any).
-//! @}
-
-#if BOARD == EVK1100
-#  include "evk1100/evk1100.h"
-#elif BOARD == EVK1101
-#  include "evk1101/evk1101.h"
-#elif BOARD == UC3C_EK
-#  include "uc3c_ek/uc3c_ek.h"
-#elif BOARD == EVK1104
-#  include "evk1104/evk1104.h"
-#elif BOARD == EVK1105
-#  include "evk1105/evk1105.h"
-#elif BOARD == STK600_RCUC3L0
-#  include "stk600/rcuc3l0/stk600_rcuc3l0.h"
-#elif BOARD == UC3L_EK
-#  include "uc3l_ek/uc3l_ek.h"
-#elif BOARD == STK600_RCUC3L4
-#  include "stk600/rcuc3l4/stk600_rcuc3l4.h"
-#elif BOARD == XPLAIN
-#  include "xplain/xplain.h"
-#elif BOARD == STK600_MEGA
-  /*No header-file to include*/
-#elif BOARD == STK600_MEGA_RF
-#  include "stk600.h"
-#elif BOARD == ATMEGA256RFR2_XPLAINED_PRO
-#  include "atmega256rfr2_xplained_pro/atmega256rfr2_xplained_pro.h"
-#elif BOARD == ATMEGA256RFR2_ZIGBIT
-#  include "atmega256rfr2_zigbit/atmega256rfr2_zigbit.h"
-#elif BOARD == STK600_RC032X
-#  include "stk600/rc032x/stk600_rc032x.h"
-#elif BOARD == STK600_RC044X
-#  include "stk600/rc044x/stk600_rc044x.h"
-#elif BOARD == STK600_RC064X
-#  include "stk600/rc064x/stk600_rc064x.h"
-#elif BOARD == STK600_RC100X
-#  include "stk600/rc100x/stk600_rc100x.h"
-#elif BOARD == UC3_A3_XPLAINED
-#  include "uc3_a3_xplained/uc3_a3_xplained.h"
-#elif BOARD == UC3_L0_XPLAINED
-#  include "uc3_l0_xplained/uc3_l0_xplained.h"
-#elif BOARD == STK600_RCUC3B0
-#  include "stk600/rcuc3b0/stk600_rcuc3b0.h"
-#elif BOARD == STK600_RCUC3D
-#  include "stk600/rcuc3d/stk600_rcuc3d.h"
-#elif BOARD == STK600_RCUC3C0
-#  include "stk600/rcuc3c0/stk600_rcuc3c0.h"
-#elif BOARD == SAMG53_XPLAINED_PRO
-#  include "samg53_xplained_pro/samg53_xplained_pro.h"
-#elif BOARD == XMEGA_B1_XPLAINED
-#  include "xmega_b1_xplained/xmega_b1_xplained.h"
-#elif BOARD == STK600_RC064X_LCDX
-#  include "stk600/rc064x_lcdx/stk600_rc064x_lcdx.h"
-#elif BOARD == STK600_RC100X_LCDX
-#  include "stk600/rc100x_lcdx/stk600_rc100x_lcdx.h"
-#elif BOARD == XMEGA_A1_XPLAINED
-#  include "xmega_a1_xplained/xmega_a1_xplained.h"
-#elif BOARD == XMEGA_A1U_XPLAINED_PRO
-#  include "xmega_a1u_xplained_pro/xmega_a1u_xplained_pro.h"
-#elif BOARD == UC3_L0_XPLAINED_BC
-#  include "uc3_l0_xplained_bc/uc3_l0_xplained_bc.h"
-#elif BOARD == SAM3S_EK
-#  include "sam3s_ek/sam3s_ek.h"
-#  include "system_sam3s.h"
-#elif BOARD == SAM3S_EK2
-#  include "sam3s_ek2/sam3s_ek2.h"
-#  include "system_sam3sd8.h"
-#elif BOARD == SAM3U_EK
-#  include "sam3u_ek/sam3u_ek.h"
-#  include "system_sam3u.h"
-#elif BOARD == SAM3X_EK
-#  include "sam3x_ek/sam3x_ek.h"
-#  include "system_sam3x.h"
-#elif BOARD == SAM3N_EK
-#  include "sam3n_ek/sam3n_ek.h"
-#  include "system_sam3n.h"
-#elif BOARD == SAM4S_EK
-#  include "sam4s_ek/sam4s_ek.h"
-#  include "system_sam4s.h"
-#elif BOARD == SAM4S_WPIR_RD
-#  include "sam4s_wpir_rd/sam4s_wpir_rd.h"
-#  include "system_sam4s.h"
-#elif BOARD == SAM4S_XPLAINED
-#  include "sam4s_xplained/sam4s_xplained.h"
-#  include "system_sam4s.h"
-#elif BOARD == SAM4S_EK2
-#  include "sam4s_ek2/sam4s_ek2.h"
-#  include "system_sam4s.h"
-#elif BOARD == MEGA_1284P_XPLAINED
-  /*No header-file to include*/
-#elif BOARD == ARDUINO_DUE_X
-#  include "arduino_due_x/arduino_due_x.h"
-#  include "system_sam3x.h"
-#elif BOARD == SAM4L_EK
-#  include "sam4l_ek/sam4l_ek.h"
-#elif BOARD == SAM4E_EK
-#  include "sam4e_ek/sam4e_ek.h"
-#elif BOARD == SAMD20_XPLAINED_PRO
-#  include "samd20_xplained_pro/samd20_xplained_pro.h"
-#elif BOARD == SAMD21_XPLAINED_PRO
-#  include "samd21_xplained_pro/samd21_xplained_pro.h"
-#elif BOARD == SAMR21_XPLAINED_PRO
-#  include "samr21_xplained_pro/samr21_xplained_pro.h"
-#elif BOARD == SAMD11_XPLAINED_PRO
-#  include "samd11_xplained_pro/samd11_xplained_pro.h"
-#elif BOARD == SAM4N_XPLAINED_PRO
-#  include "sam4n_xplained_pro/sam4n_xplained_pro.h"
-#elif BOARD == MEGA1284P_XPLAINED_BC
-#  include "mega1284p_xplained_bc/mega1284p_xplained_bc.h"
-#elif BOARD == UC3_L0_QT600
-#  include "uc3_l0_qt600/uc3_l0_qt600.h"
-#elif BOARD == XMEGA_A3BU_XPLAINED
-#  include "xmega_a3bu_xplained/xmega_a3bu_xplained.h"
-#elif BOARD == XMEGA_E5_XPLAINED
-#  include "xmega_e5_xplained/xmega_e5_xplained.h"
-#elif BOARD == UC3B_BOARD_CONTROLLER
-#  include "uc3b_board_controller/uc3b_board_controller.h"
-#elif BOARD == RZ600
-#  include "rz600/rz600.h"
-#elif BOARD == STK600_RCUC3A0
-#  include "stk600/rcuc3a0/stk600_rcuc3a0.h"
-#elif BOARD == ATXMEGA128A1_QT600
-#  include "atxmega128a1_qt600/atxmega128a1_qt600.h"
-#elif BOARD == STK600_RCUC3L3
-#  include "stk600/rcuc3l3/stk600_rcuc3l3.h"
-#elif BOARD == SAM4S_XPLAINED_PRO
-#  include "sam4s_xplained_pro/sam4s_xplained_pro.h"
-#elif BOARD == SAM4L_XPLAINED_PRO
-#  include "sam4l_xplained_pro/sam4l_xplained_pro.h"
-#elif BOARD == SAM4L8_XPLAINED_PRO
-#  include "sam4l8_xplained_pro/sam4l8_xplained_pro.h"
-#elif BOARD == SAM4C_EK
-#  include "sam4c_ek/sam4c_ek.h"
-#elif BOARD == SAM4CMP_DB
-#  include "sam4cmp_db/sam4cmp_db.h"
-#elif BOARD == SAM4CMS_DB
-#  include "sam4cms_db/sam4cms_db.h"
-#elif BOARD == SAM4CP16BMB
-#  include "sam4cp16bmb/sam4cp16bmb.h"
-#elif BOARD == ATPL230AMB
-#  include "atpl230amb/atpl230amb.h"
-#elif BOARD == SIMULATOR_XMEGA_A1
-#  include "simulator/xmega_a1/simulator_xmega_a1.h"
-#elif BOARD == XMEGA_C3_XPLAINED
-#  include "xmega_c3_xplained/xmega_c3_xplained.h"
-#elif BOARD == XMEGA_RF233_ZIGBIT
-#  include "xmega_rf233_zigbit/xmega_rf233_zigbit.h"
-#elif BOARD == XMEGA_A3_REB_CBB
-#  include "xmega_a3_reb_cbb/xmega_a3_reb_cbb.h"
-#elif BOARD == ATMEGARFX_RCB
-#  include "atmegarfx_rcb/atmegarfx_rcb.h"
-#elif BOARD == RCB256RFR2_XPRO
-#  include "atmega256rfr2_rcb_xpro/atmega256rfr2_rcb_xpro.h"
-#elif BOARD == XMEGA_RF212B_ZIGBIT
-#  include "xmega_rf212b_zigbit/xmega_rf212b_zigbit.h"
-#elif BOARD == SAM4E_XPLAINED_PRO
-#  include "sam4e_xplained_pro/sam4e_xplained_pro.h"
-#elif BOARD == AVR_SIMULATOR_UC3
-#  include "avr_simulator_uc3/avr_simulator_uc3.h"
-#elif BOARD == USER_BOARD
-  // User-reserved area: #include the header file of your board here (if any).
-#  include "user_board.h"
-#elif BOARD == DUMMY_BOARD
-#  include "dummy/dummy_board.h"
-#else
-#  error No known Atmel board defined
-#endif
-
-#if (defined EXT_BOARD)
-#  if EXT_BOARD == MC300
-#    include "mc300/mc300.h"
-#  elif (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_1)  || \
-        (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_2)  || \
-        (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_A1) || \
-        (EXT_BOARD == SENSORS_XPLAINED_PRESSURE_1)  || \
-        (EXT_BOARD == SENSORS_XPLAINED_LIGHTPROX_1) || \
-        (EXT_BOARD == SENSORS_XPLAINED_BREADBOARD)
-#    include "sensors_xplained/sensors_xplained.h"
-#  elif EXT_BOARD == RZ600_AT86RF231
-#     include "at86rf231/at86rf231.h"
-#  elif EXT_BOARD == RZ600_AT86RF230B
-#    include "at86rf230b/at86rf230b.h"
-#  elif EXT_BOARD == RZ600_AT86RF212
-#    include "at86rf212/at86rf212.h"
-#  elif EXT_BOARD == SECURITY_XPLAINED
-#    include "security_xplained.h"
-#  elif EXT_BOARD == USER_EXT_BOARD
-    // User-reserved area: #include the header file of your extension board here
-    // (if any).
-#  endif
-#endif
-
-
-#if (defined(__GNUC__) && defined(__AVR32__)) || (defined(__ICCAVR32__) || defined(__AAVR32__))
-#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling.
-
-/*! \brief This function initializes the board target resources
- *
- * This function should be called to ensure proper initialization of the target
- * board hardware connected to the part.
- */
-extern void board_init(void);
-
-#endif  // #ifdef __AVR32_ABI_COMPILER__
-#else
-/*! \brief This function initializes the board target resources
- *
- * This function should be called to ensure proper initialization of the target
- * board hardware connected to the part.
- */
-extern void board_init(void);
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-
-/**
- * \}
- */
-
-#endif  // _BOARD_H_
diff --git a/FanBoard/FanControlBoard/src/ASF/common/boards/user_board/init.c b/FanBoard/FanControlBoard/src/ASF/common/boards/user_board/init.c
deleted file mode 100644
index 8397296..0000000
--- a/FanBoard/FanControlBoard/src/ASF/common/boards/user_board/init.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * \file
- *
- * \brief User board initialization template
- *
- */
-
-#include <asf.h>
-#include <board.h>
-#include <conf_board.h>
-
-void board_init(void)
-{
-	/* This function is meant to contain board-specific initialization code
-	 * for, e.g., the I/O pins. The initialization can rely on application-
-	 * specific board configuration, found in conf_board.h.
-	 */
-}
diff --git a/FanBoard/FanControlBoard/src/ASF/common/boards/user_board/user_board.h b/FanBoard/FanControlBoard/src/ASF/common/boards/user_board/user_board.h
deleted file mode 100644
index 02896df..0000000
--- a/FanBoard/FanControlBoard/src/ASF/common/boards/user_board/user_board.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * \file
- *
- * \brief User board definition template
- *
- */
-
- /* This file is intended to contain definitions and configuration details for
- * features and devices that are available on the board, e.g., frequency and
- * startup time for an external crystal, external memory devices, LED and USART
- * pins.
- */
-
-#ifndef USER_BOARD_H
-#define USER_BOARD_H
-
-#include <conf_board.h>
-
-// External oscillator settings.
-// Uncomment and set correct values if external oscillator is used.
-
-// External oscillator frequency
-//#define BOARD_XOSC_HZ          8000000
-
-// External oscillator type.
-//!< External clock signal
-//#define BOARD_XOSC_TYPE        XOSC_TYPE_EXTERNAL
-//!< 32.768 kHz resonator on TOSC
-//#define BOARD_XOSC_TYPE        XOSC_TYPE_32KHZ
-//!< 0.4 to 16 MHz resonator on XTALS
-//#define BOARD_XOSC_TYPE        XOSC_TYPE_XTAL
-
-// External oscillator startup time
-//#define BOARD_XOSC_STARTUP_US  500000
-
-
-#endif // USER_BOARD_H
diff --git a/FanBoard/FanControlBoard/src/ASF/common/utils/interrupt.h b/FanBoard/FanControlBoard/src/ASF/common/utils/interrupt.h
deleted file mode 100644
index 33ae884..0000000
--- a/FanBoard/FanControlBoard/src/ASF/common/utils/interrupt.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/**
- * \file
- *
- * \brief Global interrupt management for 8- and 32-bit AVR
- *
- * Copyright (c) 2010-2014 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * 3. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * \asf_license_stop
- *
- */
-#ifndef UTILS_INTERRUPT_H
-#define UTILS_INTERRUPT_H
-
-#include <parts.h>
-
-#if XMEGA || MEGA || TINY
-#  include "interrupt/interrupt_avr8.h"
-#elif UC3
-#  include "interrupt/interrupt_avr32.h"
-#elif SAM
-#  include "interrupt/interrupt_sam_nvic.h"
-#else
-#  error Unsupported device.
-#endif
-
-/**
- * \defgroup interrupt_group Global interrupt management
- *
- * This is a driver for global enabling and disabling of interrupts.
- *
- * @{
- */
-
-#if defined(__DOXYGEN__)
-/**
- * \def CONFIG_INTERRUPT_FORCE_INTC
- * \brief Force usage of the ASF INTC driver
- *
- * Predefine this symbol when preprocessing to force the use of the ASF INTC driver.
- * This is useful to ensure compatibility across compilers and shall be used only when required
- * by the application needs.
- */
-#  define CONFIG_INTERRUPT_FORCE_INTC
-#endif
-
-//! \name Global interrupt flags
-//@{
-/**
- * \typedef irqflags_t
- * \brief Type used for holding state of interrupt flag
- */
-
-/**
- * \def cpu_irq_enable
- * \brief Enable interrupts globally
- */
-
-/**
- * \def cpu_irq_disable
- * \brief Disable interrupts globally
- */
-
-/**
- * \fn irqflags_t cpu_irq_save(void)
- * \brief Get and clear the global interrupt flags
- *
- * Use in conjunction with \ref cpu_irq_restore.
- *
- * \return Current state of interrupt flags.
- *
- * \note This function leaves interrupts disabled.
- */
-
-/**
- * \fn void cpu_irq_restore(irqflags_t flags)
- * \brief Restore global interrupt flags
- *
- * Use in conjunction with \ref cpu_irq_save.
- *
- * \param flags State to set interrupt flag to.
- */
-
-/**
- * \fn bool cpu_irq_is_enabled_flags(irqflags_t flags)
- * \brief Check if interrupts are globally enabled in supplied flags
- *
- * \param flags Currents state of interrupt flags.
- *
- * \return True if interrupts are enabled.
- */
-
-/**
- * \def cpu_irq_is_enabled
- * \brief Check if interrupts are globally enabled
- *
- * \return True if interrupts are enabled.
- */
-//@}
-
-//! @}
-
-/**
- * \ingroup interrupt_group
- * \defgroup interrupt_deprecated_group Deprecated interrupt definitions
- */
-
-#endif /* UTILS_INTERRUPT_H */
diff --git a/FanBoard/FanControlBoard/src/ASF/common/utils/interrupt/interrupt_avr8.h b/FanBoard/FanControlBoard/src/ASF/common/utils/interrupt/interrupt_avr8.h
deleted file mode 100644
index 7320475..0000000
--- a/FanBoard/FanControlBoard/src/ASF/common/utils/interrupt/interrupt_avr8.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/**
- * \file
- *
- * \brief Global interrupt management for 8-bit AVR
- *
- * Copyright (C) 2010-2014 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * 3. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * \asf_license_stop
- *
- */
-#ifndef UTILS_INTERRUPT_INTERRUPT_H
-#define UTILS_INTERRUPT_INTERRUPT_H
-
-#include <compiler.h>
-#include <parts.h>
-
-/**
- * \weakgroup interrupt_group
- *
- * @{
- */
-
-#ifdef ISR_CUSTOM_H
-#  include ISR_CUSTOM_H
-#else
-
-/**
- * \def ISR
- * \brief Define service routine for specified interrupt vector
- *
- * Usage:
- * \code
-	ISR(FOO_vect)
-	{
-	    ...
-	}
-\endcode
- *
- * \param vect Interrupt vector name as found in the device header files.
- */
-#if defined(__DOXYGEN__)
-#  define ISR(vect)
-#elif defined(__GNUC__)
-#  include <avr/interrupt.h>
-#elif defined(__ICCAVR__)
-#  define __ISR(x) _Pragma(#x)
-#  define ISR(vect) __ISR(vector=vect) __interrupt void handler_##vect(void)
-#endif
-#endif // ISR_CUSTOM_H
-
-#if XMEGA
-/**
- * \brief Initialize interrupt vectors
- * Enables all interrupt levels, with vectors located in the application section
- * and fixed priority scheduling.
- */
-#define irq_initialize_vectors() \
-	PMIC.CTRL = PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm;
-#elif MEGA_RF
-#define irq_initialize_vectors()
-#endif
-
-#ifdef __GNUC__
-#  define cpu_irq_enable()     sei()
-#  define cpu_irq_disable()    cli()
-#else
-#  define cpu_irq_enable()     __enable_interrupt()
-#  define cpu_irq_disable()    __disable_interrupt()
-#endif
-
-typedef uint8_t irqflags_t;
-
-static inline irqflags_t cpu_irq_save(void)
-{
-	irqflags_t flags = SREG;
-	cpu_irq_disable();
-	return flags;
-}
-
-static inline void cpu_irq_restore(irqflags_t flags)
-{
-	barrier();
-	SREG = flags;
-}
-
-static inline bool cpu_irq_is_enabled_flags(irqflags_t flags)
-{
-#if XMEGA
-#  ifdef __GNUC__
-	return flags & CPU_I_bm;
-#  else
-	return flags & I_bm;
-#  endif
-#elif MEGA || TINY
-	return flags & (1 << SREG_I);
-#endif
-}
-
-#define cpu_irq_is_enabled()             cpu_irq_is_enabled_flags(SREG)
-
-//! @}
-
-/**
- * \weakgroup interrupt_deprecated_group
- * @{
- */
-// Deprecated definitions.
-#define Enable_global_interrupt()        cpu_irq_enable()
-#define Disable_global_interrupt()       cpu_irq_disable()
-#define Is_global_interrupt_enabled()    cpu_irq_is_enabled()
-//! @}
-
-#endif /* UTILS_INTERRUPT_INTERRUPT_H */
diff --git a/FanBoard/FanControlBoard/src/ASF/common/utils/make/Makefile.avr.in b/FanBoard/FanControlBoard/src/ASF/common/utils/make/Makefile.avr.in
deleted file mode 100644
index 3872505..0000000
--- a/FanBoard/FanControlBoard/src/ASF/common/utils/make/Makefile.avr.in
+++ /dev/null
@@ -1,483 +0,0 @@
-# List of available make goals:
-#
-# all                     Default target, builds the project
-# clean                   Clean up the project
-# rebuild                 Rebuild the project
-#
-# doc                     Build the documentation
-# cleandoc                Clean up the documentation
-# rebuilddoc              Rebuild the documentation
-#
-#
-# Copyright (c) 2009 - 2013 Atmel Corporation. All rights reserved.
-#
-# \asf_license_start
-#
-# \page License
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# 1. Redistributions of source code must retain the above copyright notice,
-#    this list of conditions and the following disclaimer.
-#
-# 2. Redistributions in binary form must reproduce the above copyright notice,
-#    this list of conditions and the following disclaimer in the documentation
-#    and/or other materials provided with the distribution.
-#
-# 3. The name of Atmel may not be used to endorse or promote products derived
-#    from this software without specific prior written permission.
-#
-# 4. This software may only be redistributed and used in connection with an
-#    Atmel microcontroller product.
-#
-# THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
-# EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
-# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# \asf_license_stop
-#
-
-# Include the config.mk file from the current working path, e.g., where the
-# user called make.
-include config.mk
-
-# Tool to use to generate documentation from the source code
-DOCGEN          ?= doxygen
-
-# Look for source files relative to the top-level source directory
-VPATH           := $(PRJ_PATH)
-
-# Output target file
-target          := $(TARGET)
-
-# Output project name (target name minus suffix)
-project         := $(basename $(target))
-
-# Output target file (typically ELF or static library)
-ifeq ($(suffix $(target)),.a)
-target_type     := lib
-else
-ifeq ($(suffix $(target)),.elf)
-target_type     := elf
-else
-$(error "Target type $(target_type) is not supported")
-endif
-endif
-
-# Allow override of operating system detection. The user can add OS=Linux or
-# OS=Windows on the command line to explicit set the host OS.
-#
-# This allows to work around broken uname utility on certain systems.
-ifdef OS
-  ifeq ($(strip $(OS)), Linux)
-    os_type     := Linux
-  endif
-  ifeq ($(strip $(OS)), Windows)
-    os_type     := windows32_64
-  endif
-endif
-
-os_type         ?= $(strip $(shell uname))
-
-ifeq ($(os_type),windows32)
-os              := Windows
-else
-ifeq ($(os_type),windows64)
-os              := Windows
-else
-ifeq ($(os_type),windows32_64)
-os              ?= Windows
-else
-ifeq ($(os_type),)
-os              := Windows
-else
-# Default to Linux style operating system. Both Cygwin and mingw are fully
-# compatible (for this Makefile) with Linux.
-os              := Linux
-endif
-endif
-endif
-endif
-
-# Output documentation directory and configuration file.
-docdir          := ../doxygen/html
-doccfg          := ../doxygen/doxyfile.doxygen
-
-CROSS           ?= avr-
-AR              := $(CROSS)ar
-AS              := $(CROSS)as
-CC              := $(CROSS)gcc
-CPP             := $(CROSS)gcc -E
-CXX             := $(CROSS)g++
-LD              := $(CROSS)gcc
-NM              := $(CROSS)nm
-OBJCOPY         := $(CROSS)objcopy
-OBJDUMP         := $(CROSS)objdump
-SIZE            := $(CROSS)size
-
-RM              := rm
-ifeq ($(os),Windows)
-RMDIR           := rmdir /S /Q
-else
-RMDIR           := rmdir -p --ignore-fail-on-non-empty
-endif
-
-# On Windows, we need to override the shell to force the use of cmd.exe
-ifeq ($(os),Windows)
-SHELL           := cmd
-endif
-
-# Strings for beautifying output
-MSG_CLEAN_FILES         = "RM      *.o *.d"
-MSG_CLEAN_DIRS          = "RMDIR   $(strip $(clean-dirs))"
-MSG_CLEAN_DOC           = "RMDIR   $(docdir)"
-MSG_MKDIR               = "MKDIR   $(dir $@)"
-
-MSG_INFO                = "INFO    "
-MSG_PREBUILD            = "PREBUILD  $(PREBUILD_CMD)"
-MSG_POSTBUILD           = "POSTBUILD $(POSTBUILD_CMD)"
-
-MSG_ARCHIVING           = "AR      $@"
-MSG_ASSEMBLING          = "AS      $@"
-MSG_BINARY_IMAGE        = "OBJCOPY $@"
-MSG_COMPILING           = "CC      $@"
-MSG_COMPILING_CXX       = "CXX     $@"
-MSG_EEPROM_IMAGE        = "OBJCOPY $@"
-MSG_EXTENDED_LISTING    = "OBJDUMP $@"
-MSG_IHEX_IMAGE          = "OBJCOPY $@"
-MSG_LINKING             = "LN      $@"
-MSG_PREPROCESSING       = "CPP     $@"
-MSG_SIZE                = "SIZE    $@"
-MSG_SYMBOL_TABLE        = "NM      $@"
-
-MSG_GENERATING_DOC      = "DOXYGEN $(docdir)"
-
-# Don't use make's built-in rules and variables
-MAKEFLAGS       += -rR
-
-# Don't print 'Entering directory ...'
-MAKEFLAGS       += --no-print-directory
-
-# Function for reversing the order of a list
-reverse = $(if $(1),$(call reverse,$(wordlist 2,$(words $(1)),$(1)))) $(firstword $(1))
-
-# Hide command output by default, but allow the user to override this
-# by adding V=1 on the command line.
-#
-# This is inspired by the Kbuild system used by the Linux kernel.
-ifdef V
-  ifeq ("$(origin V)", "command line")
-    VERBOSE = $(V)
-  endif
-endif
-ifndef VERBOSE
-  VERBOSE = 0
-endif
-
-ifeq ($(VERBOSE), 1)
-  Q =
-else
-  Q = @
-endif
-
-arflags-gnu-y           := $(ARFLAGS)
-asflags-gnu-y           := $(ASFLAGS)
-cflags-gnu-y            := $(CFLAGS)
-cxxflags-gnu-y          := $(CXXFLAGS)
-cppflags-gnu-y          := $(CPPFLAGS)
-cpuflags-gnu-y          :=
-dbgflags-gnu-y          := $(DBGFLAGS)
-libflags-gnu-y          := $(foreach LIB,$(LIBS),-l$(LIB))
-ldflags-gnu-y           := $(LDFLAGS)
-flashflags-gnu-y        := $(FLASHFLAGS)
-eepromflags-gnu-y       := $(EEPROMFLAGS)
-clean-files             :=
-clean-dirs              :=
-
-clean-files             += $(wildcard $(target) $(project).map)
-clean-files             += $(wildcard $(project).hex $(project).eep)
-clean-files             += $(wildcard $(project).lss $(project).sym)
-clean-files             += $(wildcard $(build))
-
-# Use pipes instead of temporary files for communication between processes
-cflags-gnu-y    += -pipe
-asflags-gnu-y   += -pipe
-ldflags-gnu-y   += -pipe
-
-# Archiver flags.
-arflags-gnu-y   += rcs
-
-# Always enable warnings. And be very careful about implicit
-# declarations.
-cflags-gnu-y    += -Wall -Wstrict-prototypes -Wmissing-prototypes
-cflags-gnu-y    += -Werror-implicit-function-declaration
-cxxflags-gnu-y  += -Wall
-# IAR doesn't allow arithmetic on void pointers, so warn about that.
-cflags-gnu-y    += -Wpointer-arith
-cxxflags-gnu-y  += -Wpointer-arith
-
-# Preprocessor flags.
-cppflags-gnu-y  += $(foreach INC,$(addprefix $(PRJ_PATH)/,$(INC_PATH)),-I$(INC))
-asflags-gnu-y   += $(foreach INC,$(addprefix $(PRJ_PATH)/,$(INC_PATH)),'-Wa,-I$(INC)')
-
-# CPU specific flags.
-cpuflags-gnu-y  += -mmcu=$(MCU)
-
-# Dependency file flags.
-depflags        = -MD -MP -MQ $@
-
-# Debug specific flags.
-ifdef BUILD_DEBUG_LEVEL
-dbgflags-gnu-y  += -g$(BUILD_DEBUG_LEVEL)
-else
-dbgflags-gnu-y  += -gdwarf-2
-endif
-
-# Optimization specific flags.
-ifdef BUILD_OPTIMIZATION
-optflags-gnu-y  = -O$(BUILD_OPTIMIZATION)
-else
-optflags-gnu-y  = $(OPTIMIZATION)
-endif
-
-# Relax compilation and linking.
-cflags-gnu-y    += -mrelax
-cxxflags-gnu-y  += -mrelax
-asflags-gnu-y   += -mrelax
-ldflags-gnu-y   += -Wl,--relax
-
-# Always preprocess assembler files.
-asflags-gnu-y   += -x assembler-with-cpp
-# Compile C files using the GNU99 standard.
-cflags-gnu-y    += -std=gnu99
-# Compile C++ files using the GNU++98 standard.
-cxxflags-gnu-y  += -std=gnu++98
-
-# Use unsigned character type when compiling.
-cflags-gnu-y    += -funsigned-char
-cxxflags-gnu-y  += -funsigned-char
-
-# Don't use strict aliasing (very common in embedded applications).
-cflags-gnu-y    += -fno-strict-aliasing
-cxxflags-gnu-y  += -fno-strict-aliasing
-
-# Separate each function and data into its own separate section to allow
-# garbage collection of unused sections.
-cflags-gnu-y    += -ffunction-sections -fdata-sections
-cxxflags-gnu-y  += -ffunction-sections -fdata-sections
-
-# Garbage collect unreferred sections when linking.
-ldflags-gnu-y   += -Wl,--gc-sections
-
-# Output a link map file and a cross reference table
-ldflags-gnu-y   += -Wl,-Map=$(project).map,--cref
-
-# Add library search paths relative to the top level directory.
-ldflags-gnu-y   += $(foreach _LIB_PATH,$(addprefix $(PRJ_PATH)/,$(LIB_PATH)),-L$(_LIB_PATH))
-
-a_flags  = $(cpuflags-gnu-y) $(depflags) $(cppflags-gnu-y) $(asflags-gnu-y) -D__ASSEMBLY__
-c_flags  = $(cpuflags-gnu-y) $(dbgflags-gnu-y) $(depflags) $(optflags-gnu-y) $(cppflags-gnu-y) $(cflags-gnu-y)
-cxx_flags= $(cpuflags-gnu-y) $(dbgflags-gnu-y) $(depflags) $(optflags-gnu-y) $(cppflags-gnu-y) $(cxxflags-gnu-y)
-l_flags  = $(cpuflags-gnu-y) $(optflags-gnu-y) $(ldflags-gnu-y)
-ar_flags = $(arflags-gnu-y)
-
-# Intel Hex file production flags
-flashflags-gnu-y        += -R .eeprom -R .usb_descriptor_table
-
-# Eeprom file production flags
-eepromflags-gnu-y       += -j .eeprom
-eepromflags-gnu-y       += --set-section-flags=.eeprom="alloc,load"
-eepromflags-gnu-y       += --change-section-lma .eeprom=0
-
-# Source files list and part informations must already be included before
-# running this makefile
-
-# If a custom build directory is specified, use it -- force trailing / in directory name.
-ifdef BUILD_DIR
-	build-dir       := $(dir $(BUILD_DIR))$(if $(notdir $(BUILD_DIR)),$(notdir $(BUILD_DIR))/)
-else
-	build-dir        =
-endif
-
-# Create object files list from source files list.
-obj-y                   := $(addprefix $(build-dir), $(addsuffix .o,$(basename $(CSRCS) $(ASSRCS))))
-
-# Create dependency files list from source files list.
-dep-files               := $(wildcard $(foreach f,$(obj-y),$(basename $(f)).d))
-
-clean-files             += $(wildcard $(obj-y))
-clean-files             += $(dep-files)
-
-clean-dirs              += $(call reverse,$(sort $(wildcard $(dir $(obj-y)))))
-
-# Default target.
-.PHONY: all
-ifeq ($(target_type),lib)
-all: $(target) $(project).lss $(project).sym
-else
-ifeq ($(target_type),elf)
-all: prebuild $(target) $(project).lss $(project).sym $(project).hex $(project).bin postbuild
-endif
-endif
-
-prebuild:
-ifneq ($(strip $(PREBUILD_CMD)),)
-	@echo $(MSG_PREBUILD)
-	$(Q)$(PREBUILD_CMD)
-endif
-
-postbuild:
-ifneq ($(strip $(POSTBUILD_CMD)),)
-	@echo $(MSG_POSTBUILD)
-	$(Q)$(POSTBUILD_CMD)
-endif
-
-# Clean up the project.
-.PHONY: clean
-clean:
-	@$(if $(strip $(clean-files)),echo $(MSG_CLEAN_FILES))
-	$(if $(strip $(clean-files)),$(Q)$(RM) $(clean-files),)
-	@$(if $(strip $(clean-dirs)),echo $(MSG_CLEAN_DIRS))
-# Remove created directories, and make sure we only remove existing
-# directories, since recursive rmdir might help us a bit on the way.
-ifeq ($(os),Windows)
-	$(Q)$(if $(strip $(clean-dirs)),                        \
-			$(RMDIR) $(strip $(subst /,\,$(clean-dirs))))
-else
-	$(Q)$(if $(strip $(clean-dirs)),                        \
-		for directory in $(strip $(clean-dirs)); do     \
-			if [ -d "$$directory" ]; then           \
-				$(RMDIR) $$directory;           \
-			fi                                      \
-		done                                            \
-	)
-endif
-
-# Rebuild the project.
-.PHONY: rebuild
-rebuild: clean all
-
-.PHONY: objfiles
-objfiles: $(obj-y)
-
-# Create object files from C source files.
-$(build-dir)%.o: %.c $(MAKEFILE_PATH) config.mk
-	$(Q)test -d $(dir $@) || echo $(MSG_MKDIR)
-ifeq ($(os),Windows)
-	$(Q)test -d $(patsubst %/,%,$(dir $@)) || mkdir $(subst /,\,$(dir $@))
-else
-	$(Q)test -d $(dir $@) || mkdir -p $(dir $@)
-endif
-	@echo $(MSG_COMPILING)
-	$(Q)$(CC) $(c_flags) -c $< -o $@
-
-# Create object files from C++ source files.
-$(build-dir)%.o: %.cpp $(MAKEFILE_PATH) config.mk
-	$(Q)test -d $(dir $@) || echo $(MSG_MKDIR)
-ifeq ($(os),Windows)
-	$(Q)test -d $(patsubst %/,%,$(dir $@)) || mkdir $(subst /,\,$(dir $@))
-else
-	$(Q)test -d $(dir $@) || mkdir -p $(dir $@)
-endif
-	@echo $(MSG_COMPILING_CXX)
-	$(Q)$(CXX) $(cxx_flags) -c $< -o $@
-
-# Preprocess and assemble: create object files from assembler source files.
-$(build-dir)%.o: %.s $(MAKEFILE_PATH) config.mk
-	$(Q)test -d $(dir $@) || echo $(MSG_MKDIR)
-ifeq ($(os),Windows)
-	$(Q)test -d $(patsubst %/,%,$(dir $@)) || mkdir $(subst /,\,$(dir $@))
-else
-	$(Q)test -d $(dir $@) || mkdir -p $(dir $@)
-endif
-	@echo $(MSG_ASSEMBLING)
-	$(Q)$(CC) $(a_flags) -c $< -o $@
-
-# Preprocess and assemble: create object files from assembler source files.
-$(build-dir)%.o: %.S $(MAKEFILE_PATH) config.mk
-	$(Q)test -d $(dir $@) || echo $(MSG_MKDIR)
-ifeq ($(os),Windows)
-	$(Q)test -d $(patsubst %/,%,$(dir $@)) || mkdir $(subst /,\,$(dir $@))
-else
-	$(Q)test -d $(dir $@) || mkdir -p $(dir $@)
-endif
-	@echo $(MSG_ASSEMBLING)
-	$(Q)$(CC) $(a_flags) -c $< -o $@
-
-# Include all dependency files to add depedency to all header files in use.
-include $(dep-files)
-
-ifeq ($(target_type),lib)
-# Archive object files into an archive
-$(target): $(MAKEFILE_PATH) config.mk $(obj-y)
-	@echo $(MSG_ARCHIVING)
-	$(Q)$(AR) $(ar_flags) $@ $(obj-y)
-	@echo $(MSG_SIZE)
-	$(Q)$(SIZE) -Bxt $@
-else
-ifeq ($(target_type),elf)
-# Link the object files into an ELF file. Also make sure the target is rebuilt
-# if the common Makefile.avr.in or project config.mk is changed.
-$(target): $(MAKEFILE_PATH) config.mk $(obj-y)
-	@echo $(MSG_LINKING)
-	$(Q)$(LD) $(l_flags) $(obj-y) $(libflags-gnu-y) -o $@
-	@echo $(MSG_SIZE)
-	$(Q)$(SIZE) -Ax $@
-	$(Q)$(SIZE) -Bx $@
-endif
-endif
-
-# Create extended function listing from target output file.
-%.lss: $(target)
-	@echo $(MSG_EXTENDED_LISTING)
-	$(Q)$(OBJDUMP) -h -S $< > $@
-
-# Create symbol table from target output file.
-%.sym: $(target)
-	@echo $(MSG_SYMBOL_TABLE)
-	$(Q)$(NM) -n $< > $@
-
-# Create Intel HEX image from ELF output file.
-%.hex: $(target)
-	@echo $(MSG_IHEX_IMAGE)
-	$(Q)$(OBJCOPY) -O ihex $(flashflags-gnu-y)  $< $@
-
-# Create EEPROM Intel HEX image from ELF output file.
-%.eep: $(target)
-	@echo $(MSG_EEPROM_IMAGE)
-	$(Q)$(OBJCOPY) $(eepromflags-gnu-y) -O ihex $< $@  || exit 0
-
-# Create binary image from ELF output file.
-%.bin: $(target)
-	@echo $(MSG_BINARY_IMAGE)
-	$(Q)$(OBJCOPY) -O binary $< $@
-
-# Provide information about the detected host operating system.
-.SECONDARY: info-os
-info-os:
-	@echo $(MSG_INFO)$(os) build host detected
-
-# Build Doxygen generated documentation.
-.PHONY: doc
-doc:
-	@echo $(MSG_GENERATING_DOC)
-	$(Q)cd $(dir $(doccfg)) && $(DOCGEN) $(notdir $(doccfg))
-
-# Clean Doxygen generated documentation.
-.PHONY: cleandoc
-cleandoc:
-	@$(if $(wildcard $(docdir)),echo $(MSG_CLEAN_DOC))
-	$(Q)$(if $(wildcard $(docdir)),$(RM) --recursive $(docdir))
-
-# Rebuild the Doxygen generated documentation.
-.PHONY: rebuilddoc
-rebuilddoc: cleandoc doc
diff --git a/FanBoard/FanControlBoard/src/ASF/common/utils/parts.h b/FanBoard/FanControlBoard/src/ASF/common/utils/parts.h
deleted file mode 100644
index d2319ae..0000000
--- a/FanBoard/FanControlBoard/src/ASF/common/utils/parts.h
+++ /dev/null
@@ -1,1242 +0,0 @@
-/**
- * \file
- *
- * \brief Atmel part identification macros
- *
- * Copyright (C) 2012-2014 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * 3. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * \asf_license_stop
- *
- */
-
-#ifndef ATMEL_PARTS_H
-#define ATMEL_PARTS_H
-
-/**
- * \defgroup part_macros_group Atmel part identification macros
- *
- * This collection of macros identify which series and families that the various
- * Atmel parts belong to. These can be used to select part-dependent sections of
- * code at compile time.
- *
- * @{
- */
-
-/**
- * \name Convenience macros for part checking
- * @{
- */
-/* ! Check GCC and IAR part definition for 8-bit AVR */
-#define AVR8_PART_IS_DEFINED(part) \
-	(defined(__ ## part ## __) || defined(__AVR_ ## part ## __))
-
-/* ! Check GCC and IAR part definition for 32-bit AVR */
-#define AVR32_PART_IS_DEFINED(part) \
-	(defined(__AT32 ## part ## __) || defined(__AVR32_ ## part ## __))
-
-/* ! Check GCC and IAR part definition for SAM */
-#define SAM_PART_IS_DEFINED(part) (defined(__ ## part ## __))
-/** @} */
-
-/**
- * \defgroup uc3_part_macros_group AVR UC3 parts
- * @{
- */
-
-/**
- * \name AVR UC3 A series
- * @{
- */
-#define UC3A0 (	\
-		AVR32_PART_IS_DEFINED(UC3A0128) || \
-		AVR32_PART_IS_DEFINED(UC3A0256) || \
-		AVR32_PART_IS_DEFINED(UC3A0512)	\
-		)
-
-#define UC3A1 (	\
-		AVR32_PART_IS_DEFINED(UC3A1128) || \
-		AVR32_PART_IS_DEFINED(UC3A1256) || \
-		AVR32_PART_IS_DEFINED(UC3A1512)	\
-		)
-
-#define UC3A3 (	\
-		AVR32_PART_IS_DEFINED(UC3A364)   || \
-		AVR32_PART_IS_DEFINED(UC3A364S)  || \
-		AVR32_PART_IS_DEFINED(UC3A3128)  || \
-		AVR32_PART_IS_DEFINED(UC3A3128S) || \
-		AVR32_PART_IS_DEFINED(UC3A3256)  || \
-		AVR32_PART_IS_DEFINED(UC3A3256S) \
-		)
-
-#define UC3A4 (	\
-		AVR32_PART_IS_DEFINED(UC3A464)   || \
-		AVR32_PART_IS_DEFINED(UC3A464S)  || \
-		AVR32_PART_IS_DEFINED(UC3A4128)  || \
-		AVR32_PART_IS_DEFINED(UC3A4128S) || \
-		AVR32_PART_IS_DEFINED(UC3A4256)  || \
-		AVR32_PART_IS_DEFINED(UC3A4256S) \
-		)
-/** @} */
-
-/**
- * \name AVR UC3 B series
- * @{
- */
-#define UC3B0 (	\
-		AVR32_PART_IS_DEFINED(UC3B064)  || \
-		AVR32_PART_IS_DEFINED(UC3B0128) || \
-		AVR32_PART_IS_DEFINED(UC3B0256) || \
-		AVR32_PART_IS_DEFINED(UC3B0512)	\
-		)
-
-#define UC3B1 (	\
-		AVR32_PART_IS_DEFINED(UC3B164)  || \
-		AVR32_PART_IS_DEFINED(UC3B1128) || \
-		AVR32_PART_IS_DEFINED(UC3B1256) || \
-		AVR32_PART_IS_DEFINED(UC3B1512)	\
-		)
-/** @} */
-
-/**
- * \name AVR UC3 C series
- * @{
- */
-#define UC3C0 (	\
-		AVR32_PART_IS_DEFINED(UC3C064C)  || \
-		AVR32_PART_IS_DEFINED(UC3C0128C) || \
-		AVR32_PART_IS_DEFINED(UC3C0256C) || \
-		AVR32_PART_IS_DEFINED(UC3C0512C) \
-		)
-
-#define UC3C1 (	\
-		AVR32_PART_IS_DEFINED(UC3C164C)  || \
-		AVR32_PART_IS_DEFINED(UC3C1128C) || \
-		AVR32_PART_IS_DEFINED(UC3C1256C) || \
-		AVR32_PART_IS_DEFINED(UC3C1512C) \
-		)
-
-#define UC3C2 (	\
-		AVR32_PART_IS_DEFINED(UC3C264C)  || \
-		AVR32_PART_IS_DEFINED(UC3C2128C) || \
-		AVR32_PART_IS_DEFINED(UC3C2256C) || \
-		AVR32_PART_IS_DEFINED(UC3C2512C) \
-		)
-/** @} */
-
-/**
- * \name AVR UC3 D series
- * @{
- */
-#define UC3D3 (	\
-		AVR32_PART_IS_DEFINED(UC64D3)  || \
-		AVR32_PART_IS_DEFINED(UC128D3) \
-		)
-
-#define UC3D4 (	\
-		AVR32_PART_IS_DEFINED(UC64D4)  || \
-		AVR32_PART_IS_DEFINED(UC128D4) \
-		)
-/** @} */
-
-/**
- * \name AVR UC3 L series
- * @{
- */
-#define UC3L0 (	\
-		AVR32_PART_IS_DEFINED(UC3L016) || \
-		AVR32_PART_IS_DEFINED(UC3L032) || \
-		AVR32_PART_IS_DEFINED(UC3L064) \
-		)
-
-#define UC3L0128 ( \
-		AVR32_PART_IS_DEFINED(UC3L0128)	\
-		)
-
-#define UC3L0256 ( \
-		AVR32_PART_IS_DEFINED(UC3L0256)	\
-		)
-
-#define UC3L3 (	\
-		AVR32_PART_IS_DEFINED(UC64L3U)  || \
-		AVR32_PART_IS_DEFINED(UC128L3U) || \
-		AVR32_PART_IS_DEFINED(UC256L3U)	\
-		)
-
-#define UC3L4 (	\
-		AVR32_PART_IS_DEFINED(UC64L4U)  || \
-		AVR32_PART_IS_DEFINED(UC128L4U) || \
-		AVR32_PART_IS_DEFINED(UC256L4U)	\
-		)
-
-#define UC3L3_L4 (UC3L3 || UC3L4)
-/** @} */
-
-/**
- * \name AVR UC3 families
- * @{
- */
-/** AVR UC3 A family */
-#define UC3A (UC3A0 || UC3A1 || UC3A3 || UC3A4)
-
-/** AVR UC3 B family */
-#define UC3B (UC3B0 || UC3B1)
-
-/** AVR UC3 C family */
-#define UC3C (UC3C0 || UC3C1 || UC3C2)
-
-/** AVR UC3 D family */
-#define UC3D (UC3D3 || UC3D4)
-
-/** AVR UC3 L family */
-#define UC3L (UC3L0 || UC3L0128 || UC3L0256 || UC3L3_L4)
-/** @} */
-
-/** AVR UC3 product line */
-#define UC3  (UC3A || UC3B || UC3C || UC3D || UC3L)
-
-/** @} */
-
-/**
- * \defgroup xmega_part_macros_group AVR XMEGA parts
- * @{
- */
-
-/**
- * \name AVR XMEGA A series
- * @{
- */
-#define XMEGA_A1 ( \
-		AVR8_PART_IS_DEFINED(ATxmega64A1)  || \
-		AVR8_PART_IS_DEFINED(ATxmega128A1) \
-		)
-
-#define XMEGA_A3 ( \
-		AVR8_PART_IS_DEFINED(ATxmega64A3)  || \
-		AVR8_PART_IS_DEFINED(ATxmega128A3) || \
-		AVR8_PART_IS_DEFINED(ATxmega192A3) || \
-		AVR8_PART_IS_DEFINED(ATxmega256A3) \
-		)
-
-#define XMEGA_A3B ( \
-		AVR8_PART_IS_DEFINED(ATxmega256A3B) \
-		)
-
-#define XMEGA_A4 ( \
-		AVR8_PART_IS_DEFINED(ATxmega16A4) || \
-		AVR8_PART_IS_DEFINED(ATxmega32A4) \
-		)
-/** @} */
-
-/**
- * \name AVR XMEGA AU series
- * @{
- */
-#define XMEGA_A1U ( \
-		AVR8_PART_IS_DEFINED(ATxmega64A1U)  || \
-		AVR8_PART_IS_DEFINED(ATxmega128A1U) \
-		)
-
-#define XMEGA_A3U ( \
-		AVR8_PART_IS_DEFINED(ATxmega64A3U)  || \
-		AVR8_PART_IS_DEFINED(ATxmega128A3U) || \
-		AVR8_PART_IS_DEFINED(ATxmega192A3U) || \
-		AVR8_PART_IS_DEFINED(ATxmega256A3U) \
-		)
-
-#define XMEGA_A3BU ( \
-		AVR8_PART_IS_DEFINED(ATxmega256A3BU) \
-		)
-
-#define XMEGA_A4U ( \
-		AVR8_PART_IS_DEFINED(ATxmega16A4U)  || \
-		AVR8_PART_IS_DEFINED(ATxmega32A4U)  || \
-		AVR8_PART_IS_DEFINED(ATxmega64A4U)  || \
-		AVR8_PART_IS_DEFINED(ATxmega128A4U) \
-		)
-/** @} */
-
-/**
- * \name AVR XMEGA B series
- * @{
- */
-#define XMEGA_B1  ( \
-		AVR8_PART_IS_DEFINED(ATxmega64B1)  || \
-		AVR8_PART_IS_DEFINED(ATxmega128B1) \
-		)
-
-#define XMEGA_B3  ( \
-		AVR8_PART_IS_DEFINED(ATxmega64B3)  || \
-		AVR8_PART_IS_DEFINED(ATxmega128B3) \
-		)
-/** @} */
-
-/**
- * \name AVR XMEGA C series
- * @{
- */
-#define XMEGA_C3 ( \
-		AVR8_PART_IS_DEFINED(ATxmega384C3)  || \
-		AVR8_PART_IS_DEFINED(ATxmega256C3)  || \
-		AVR8_PART_IS_DEFINED(ATxmega192C3)  || \
-		AVR8_PART_IS_DEFINED(ATxmega128C3)  || \
-		AVR8_PART_IS_DEFINED(ATxmega64C3)   || \
-		AVR8_PART_IS_DEFINED(ATxmega32C3) \
-		)
-
-#define XMEGA_C4 ( \
-		AVR8_PART_IS_DEFINED(ATxmega32C4)  || \
-		AVR8_PART_IS_DEFINED(ATxmega16C4) \
-		)
-/** @} */
-
-/**
- * \name AVR XMEGA D series
- * @{
- */
-#define XMEGA_D3 ( \
-		AVR8_PART_IS_DEFINED(ATxmega32D3)  || \
-		AVR8_PART_IS_DEFINED(ATxmega64D3)  || \
-		AVR8_PART_IS_DEFINED(ATxmega128D3) || \
-		AVR8_PART_IS_DEFINED(ATxmega192D3) || \
-		AVR8_PART_IS_DEFINED(ATxmega256D3) || \
-		AVR8_PART_IS_DEFINED(ATxmega384D3) \
-		)
-
-#define XMEGA_D4 ( \
-		AVR8_PART_IS_DEFINED(ATxmega16D4)  || \
-		AVR8_PART_IS_DEFINED(ATxmega32D4)  || \
-		AVR8_PART_IS_DEFINED(ATxmega64D4)  || \
-		AVR8_PART_IS_DEFINED(ATxmega128D4) \
-		)
-/** @} */
-
-/**
- * \name AVR XMEGA E series
- * @{
- */
-#define XMEGA_E5 ( \
-		AVR8_PART_IS_DEFINED(ATxmega8E5)   || \
-		AVR8_PART_IS_DEFINED(ATxmega16E5)  || \
-		AVR8_PART_IS_DEFINED(ATxmega32E5)     \
-	)
-/** @} */
-
-
-/**
- * \name AVR XMEGA families
- * @{
- */
-/** AVR XMEGA A family */
-#define XMEGA_A (XMEGA_A1 || XMEGA_A3 || XMEGA_A3B || XMEGA_A4)
-
-/** AVR XMEGA AU family */
-#define XMEGA_AU (XMEGA_A1U || XMEGA_A3U || XMEGA_A3BU || XMEGA_A4U)
-
-/** AVR XMEGA B family */
-#define XMEGA_B (XMEGA_B1 || XMEGA_B3)
-
-/** AVR XMEGA C family */
-#define XMEGA_C (XMEGA_C3 || XMEGA_C4)
-
-/** AVR XMEGA D family */
-#define XMEGA_D (XMEGA_D3 || XMEGA_D4)
-
-/** AVR XMEGA E family */
-#define XMEGA_E (XMEGA_E5)
-/** @} */
-
-
-/** AVR XMEGA product line */
-#define XMEGA (XMEGA_A || XMEGA_AU || XMEGA_B || XMEGA_C || XMEGA_D || XMEGA_E)
-
-/** @} */
-
-/**
- * \defgroup mega_part_macros_group megaAVR parts
- *
- * \note These megaAVR groupings are based on the groups in AVR Libc for the
- * part header files. They are not names of official megaAVR device series or
- * families.
- *
- * @{
- */
-
-/**
- * \name ATmegaxx0/xx1 subgroups
- * @{
- */
-#define MEGA_XX0 ( \
-		AVR8_PART_IS_DEFINED(ATmega640)  || \
-		AVR8_PART_IS_DEFINED(ATmega1280) || \
-		AVR8_PART_IS_DEFINED(ATmega2560) \
-		)
-
-#define MEGA_XX1 ( \
-		AVR8_PART_IS_DEFINED(ATmega1281) || \
-		AVR8_PART_IS_DEFINED(ATmega2561) \
-		)
-/** @} */
-
-/**
- * \name megaAVR groups
- * @{
- */
-/** ATmegaxx0/xx1 group */
-#define MEGA_XX0_1 (MEGA_XX0 || MEGA_XX1)
-
-/** ATmegaxx4 group */
-#define MEGA_XX4 ( \
-		AVR8_PART_IS_DEFINED(ATmega164A)  || \
-		AVR8_PART_IS_DEFINED(ATmega164PA) || \
-		AVR8_PART_IS_DEFINED(ATmega324A)  || \
-		AVR8_PART_IS_DEFINED(ATmega324PA) || \
-		AVR8_PART_IS_DEFINED(ATmega644)   || \
-		AVR8_PART_IS_DEFINED(ATmega644A)  || \
-		AVR8_PART_IS_DEFINED(ATmega644PA) || \
-		AVR8_PART_IS_DEFINED(ATmega1284P)   || \
-		AVR8_PART_IS_DEFINED(ATmega128RFA1) \
-		)
-
-/** ATmegaxx4 group */
-#define MEGA_XX4_A ( \
-		AVR8_PART_IS_DEFINED(ATmega164A)  || \
-		AVR8_PART_IS_DEFINED(ATmega164PA) || \
-		AVR8_PART_IS_DEFINED(ATmega324A)  || \
-		AVR8_PART_IS_DEFINED(ATmega324PA) || \
-		AVR8_PART_IS_DEFINED(ATmega644A)  || \
-		AVR8_PART_IS_DEFINED(ATmega644PA) || \
-		AVR8_PART_IS_DEFINED(ATmega1284P) \
-		)
-
-/** ATmegaxx8 group */
-#define MEGA_XX8 ( \
-		AVR8_PART_IS_DEFINED(ATmega48)    || \
-		AVR8_PART_IS_DEFINED(ATmega48A)   || \
-		AVR8_PART_IS_DEFINED(ATmega48PA)  || \
-		AVR8_PART_IS_DEFINED(ATmega88)    || \
-		AVR8_PART_IS_DEFINED(ATmega88A)   || \
-		AVR8_PART_IS_DEFINED(ATmega88PA)  || \
-		AVR8_PART_IS_DEFINED(ATmega168)   || \
-		AVR8_PART_IS_DEFINED(ATmega168A)  || \
-		AVR8_PART_IS_DEFINED(ATmega168PA) || \
-		AVR8_PART_IS_DEFINED(ATmega328)   || \
-		AVR8_PART_IS_DEFINED(ATmega328P) \
-		)
-
-/** ATmegaxx8A/P/PA group */
-#define MEGA_XX8_A ( \
-		AVR8_PART_IS_DEFINED(ATmega48A)   || \
-		AVR8_PART_IS_DEFINED(ATmega48PA)  || \
-		AVR8_PART_IS_DEFINED(ATmega88A)   || \
-		AVR8_PART_IS_DEFINED(ATmega88PA)  || \
-		AVR8_PART_IS_DEFINED(ATmega168A)  || \
-		AVR8_PART_IS_DEFINED(ATmega168PA) || \
-		AVR8_PART_IS_DEFINED(ATmega328P) \
-		)
-
-/** ATmegaxx group */
-#define MEGA_XX ( \
-		AVR8_PART_IS_DEFINED(ATmega16)   || \
-		AVR8_PART_IS_DEFINED(ATmega16A)  || \
-		AVR8_PART_IS_DEFINED(ATmega32)   || \
-		AVR8_PART_IS_DEFINED(ATmega32A)  || \
-		AVR8_PART_IS_DEFINED(ATmega64)   || \
-		AVR8_PART_IS_DEFINED(ATmega64A)  || \
-		AVR8_PART_IS_DEFINED(ATmega128)  || \
-		AVR8_PART_IS_DEFINED(ATmega128A) \
-		)
-
-/** ATmegaxxA/P/PA group */
-#define MEGA_XX_A ( \
-		AVR8_PART_IS_DEFINED(ATmega16A)  || \
-		AVR8_PART_IS_DEFINED(ATmega32A)  || \
-		AVR8_PART_IS_DEFINED(ATmega64A)  || \
-		AVR8_PART_IS_DEFINED(ATmega128A) \
-		)
-/** ATmegaxxRFA1 group */
-#define MEGA_RFA1 ( \
-		AVR8_PART_IS_DEFINED(ATmega128RFA1) \
-		)
-
-/** ATmegaxxRFR2 group */
-#define MEGA_RFR2 ( \
-		AVR8_PART_IS_DEFINED(ATmega64RFR2)   || \
-		AVR8_PART_IS_DEFINED(ATmega128RFR2)  || \
-		AVR8_PART_IS_DEFINED(ATmega256RFR2)  || \
-		AVR8_PART_IS_DEFINED(ATmega644RFR2)  || \
-		AVR8_PART_IS_DEFINED(ATmega1284RFR2) || \
-		AVR8_PART_IS_DEFINED(ATmega2564RFR2) \
-		)
-
-
-/** ATmegaxxRFxx group */
-#define MEGA_RF (MEGA_RFA1 || MEGA_RFR2)
-
-/**
- * \name ATmegaxx_un0/un1/un2 subgroups
- * @{
- */
-#define MEGA_XX_UN0 ( \
-		AVR8_PART_IS_DEFINED(ATmega16)    || \
-		AVR8_PART_IS_DEFINED(ATmega16A)   || \
-		AVR8_PART_IS_DEFINED(ATmega32)    || \
-		AVR8_PART_IS_DEFINED(ATmega32A)	\
-		)
-
-/** ATmegaxx group without power reduction and
- *  And interrupt sense register.
- */
-#define MEGA_XX_UN1 ( \
-		AVR8_PART_IS_DEFINED(ATmega64)    || \
-		AVR8_PART_IS_DEFINED(ATmega64A)   || \
-		AVR8_PART_IS_DEFINED(ATmega128)   || \
-		AVR8_PART_IS_DEFINED(ATmega128A) \
-		)
-
-/** ATmegaxx group without power reduction and
- *  And interrupt sense register.
- */
-#define MEGA_XX_UN2 ( \
-		AVR8_PART_IS_DEFINED(ATmega169P)  || \
-		AVR8_PART_IS_DEFINED(ATmega169PA) || \
-		AVR8_PART_IS_DEFINED(ATmega329P)  || \
-		AVR8_PART_IS_DEFINED(ATmega329PA) \
-		)
-
-/** Devices added to complete megaAVR offering.
- *  Please do not use this group symbol as it is not intended
- *  to be permanent: the devices should be regrouped.
- */
-#define MEGA_UNCATEGORIZED ( \
-		AVR8_PART_IS_DEFINED(AT90CAN128)     || \
-		AVR8_PART_IS_DEFINED(AT90CAN32)      || \
-		AVR8_PART_IS_DEFINED(AT90CAN64)      || \
-		AVR8_PART_IS_DEFINED(AT90PWM1)       || \
-		AVR8_PART_IS_DEFINED(AT90PWM216)     || \
-		AVR8_PART_IS_DEFINED(AT90PWM2B)      || \
-		AVR8_PART_IS_DEFINED(AT90PWM316)     || \
-		AVR8_PART_IS_DEFINED(AT90PWM3B)      || \
-		AVR8_PART_IS_DEFINED(AT90PWM81)      || \
-		AVR8_PART_IS_DEFINED(AT90USB1286)    || \
-		AVR8_PART_IS_DEFINED(AT90USB1287)    || \
-		AVR8_PART_IS_DEFINED(AT90USB162)     || \
-		AVR8_PART_IS_DEFINED(AT90USB646)     || \
-		AVR8_PART_IS_DEFINED(AT90USB647)     || \
-		AVR8_PART_IS_DEFINED(AT90USB82)      || \
-		AVR8_PART_IS_DEFINED(ATmega1284)     || \
-		AVR8_PART_IS_DEFINED(ATmega162)      || \
-		AVR8_PART_IS_DEFINED(ATmega164P)     || \
-		AVR8_PART_IS_DEFINED(ATmega165A)     || \
-		AVR8_PART_IS_DEFINED(ATmega165P)     || \
-		AVR8_PART_IS_DEFINED(ATmega165PA)    || \
-		AVR8_PART_IS_DEFINED(ATmega168P)     || \
-		AVR8_PART_IS_DEFINED(ATmega169A)     || \
-		AVR8_PART_IS_DEFINED(ATmega16M1)     || \
-		AVR8_PART_IS_DEFINED(ATmega16U2)     || \
-		AVR8_PART_IS_DEFINED(ATmega16U4)     || \
-		AVR8_PART_IS_DEFINED(ATmega256RFA2)  || \
-		AVR8_PART_IS_DEFINED(ATmega324P)     || \
-		AVR8_PART_IS_DEFINED(ATmega325)      || \
-		AVR8_PART_IS_DEFINED(ATmega3250)     || \
-		AVR8_PART_IS_DEFINED(ATmega3250A)    || \
-		AVR8_PART_IS_DEFINED(ATmega3250P)    || \
-		AVR8_PART_IS_DEFINED(ATmega3250PA)   || \
-		AVR8_PART_IS_DEFINED(ATmega325A)     || \
-		AVR8_PART_IS_DEFINED(ATmega325P)     || \
-		AVR8_PART_IS_DEFINED(ATmega325PA)    || \
-		AVR8_PART_IS_DEFINED(ATmega329)      || \
-		AVR8_PART_IS_DEFINED(ATmega3290)     || \
-		AVR8_PART_IS_DEFINED(ATmega3290A)    || \
-		AVR8_PART_IS_DEFINED(ATmega3290P)    || \
-		AVR8_PART_IS_DEFINED(ATmega3290PA)   || \
-		AVR8_PART_IS_DEFINED(ATmega329A)     || \
-		AVR8_PART_IS_DEFINED(ATmega32M1)     || \
-		AVR8_PART_IS_DEFINED(ATmega32U2)     || \
-		AVR8_PART_IS_DEFINED(ATmega32U4)     || \
-		AVR8_PART_IS_DEFINED(ATmega48P)      || \
-		AVR8_PART_IS_DEFINED(ATmega644P)     || \
-		AVR8_PART_IS_DEFINED(ATmega645)      || \
-		AVR8_PART_IS_DEFINED(ATmega6450)     || \
-		AVR8_PART_IS_DEFINED(ATmega6450A)    || \
-		AVR8_PART_IS_DEFINED(ATmega6450P)    || \
-		AVR8_PART_IS_DEFINED(ATmega645A)     || \
-		AVR8_PART_IS_DEFINED(ATmega645P)     || \
-		AVR8_PART_IS_DEFINED(ATmega649)      || \
-		AVR8_PART_IS_DEFINED(ATmega6490)     || \
-		AVR8_PART_IS_DEFINED(ATmega6490A)    || \
-		AVR8_PART_IS_DEFINED(ATmega6490P)    || \
-		AVR8_PART_IS_DEFINED(ATmega649A)     || \
-		AVR8_PART_IS_DEFINED(ATmega649P)     || \
-		AVR8_PART_IS_DEFINED(ATmega64M1)     || \
-		AVR8_PART_IS_DEFINED(ATmega64RFA2)   || \
-		AVR8_PART_IS_DEFINED(ATmega8)        || \
-		AVR8_PART_IS_DEFINED(ATmega8515)     || \
-		AVR8_PART_IS_DEFINED(ATmega8535)     || \
-		AVR8_PART_IS_DEFINED(ATmega88P)      || \
-		AVR8_PART_IS_DEFINED(ATmega8A)       || \
-		AVR8_PART_IS_DEFINED(ATmega8U2)         \
-	)
-
-/** Unspecified group */
-#define MEGA_UNSPECIFIED (MEGA_XX_UN0 || MEGA_XX_UN1 || MEGA_XX_UN2 || \
-	MEGA_UNCATEGORIZED)
-
-/** @} */
-
-/** megaAVR product line */
-#define MEGA (MEGA_XX0_1 || MEGA_XX4 || MEGA_XX8 || MEGA_XX || MEGA_RF || \
-	MEGA_UNSPECIFIED)
-
-/** @} */
-
-/**
- * \defgroup tiny_part_macros_group tinyAVR parts
- *
- * @{
- */
-
-/**
- * \name tinyAVR groups
- * @{
- */
-
-/** Devices added to complete tinyAVR offering.
- *  Please do not use this group symbol as it is not intended
- *  to be permanent: the devices should be regrouped.
- */
-#define TINY_UNCATEGORIZED ( \
-		AVR8_PART_IS_DEFINED(ATtiny10)    || \
-		AVR8_PART_IS_DEFINED(ATtiny13)    || \
-		AVR8_PART_IS_DEFINED(ATtiny13A)   || \
-		AVR8_PART_IS_DEFINED(ATtiny1634)  || \
-		AVR8_PART_IS_DEFINED(ATtiny167)   || \
-		AVR8_PART_IS_DEFINED(ATtiny20)    || \
-		AVR8_PART_IS_DEFINED(ATtiny2313)  || \
-		AVR8_PART_IS_DEFINED(ATtiny2313A) || \
-		AVR8_PART_IS_DEFINED(ATtiny24)    || \
-		AVR8_PART_IS_DEFINED(ATtiny24A)   || \
-		AVR8_PART_IS_DEFINED(ATtiny25)    || \
-		AVR8_PART_IS_DEFINED(ATtiny26)    || \
-		AVR8_PART_IS_DEFINED(ATtiny261)   || \
-		AVR8_PART_IS_DEFINED(ATtiny261A)  || \
-		AVR8_PART_IS_DEFINED(ATtiny4)     || \
-		AVR8_PART_IS_DEFINED(ATtiny40)    || \
-		AVR8_PART_IS_DEFINED(ATtiny4313)  || \
-		AVR8_PART_IS_DEFINED(ATtiny43U)   || \
-		AVR8_PART_IS_DEFINED(ATtiny44)    || \
-		AVR8_PART_IS_DEFINED(ATtiny44A)   || \
-		AVR8_PART_IS_DEFINED(ATtiny45)    || \
-		AVR8_PART_IS_DEFINED(ATtiny461)   || \
-		AVR8_PART_IS_DEFINED(ATtiny461A)  || \
-		AVR8_PART_IS_DEFINED(ATtiny48)    || \
-		AVR8_PART_IS_DEFINED(ATtiny5)     || \
-		AVR8_PART_IS_DEFINED(ATtiny828)   || \
-		AVR8_PART_IS_DEFINED(ATtiny84)    || \
-		AVR8_PART_IS_DEFINED(ATtiny84A)   || \
-		AVR8_PART_IS_DEFINED(ATtiny85)    || \
-		AVR8_PART_IS_DEFINED(ATtiny861)   || \
-		AVR8_PART_IS_DEFINED(ATtiny861A)  || \
-		AVR8_PART_IS_DEFINED(ATtiny87)    || \
-		AVR8_PART_IS_DEFINED(ATtiny88)    || \
-		AVR8_PART_IS_DEFINED(ATtiny9)        \
-	)
-
-/** @} */
-
-/** tinyAVR product line */
-#define TINY (TINY_UNCATEGORIZED)
-
-/** @} */
-
-/**
- * \defgroup sam_part_macros_group SAM parts
- * @{
- */
-
-/**
- * \name SAM3S series
- * @{
- */
-#define SAM3S1 ( \
-		SAM_PART_IS_DEFINED(SAM3S1A) ||	\
-		SAM_PART_IS_DEFINED(SAM3S1B) ||	\
-		SAM_PART_IS_DEFINED(SAM3S1C) \
-		)
-
-#define SAM3S2 ( \
-		SAM_PART_IS_DEFINED(SAM3S2A) ||	\
-		SAM_PART_IS_DEFINED(SAM3S2B) ||	\
-		SAM_PART_IS_DEFINED(SAM3S2C) \
-		)
-
-#define SAM3S4 ( \
-		SAM_PART_IS_DEFINED(SAM3S4A) ||	\
-		SAM_PART_IS_DEFINED(SAM3S4B) ||	\
-		SAM_PART_IS_DEFINED(SAM3S4C) \
-		)
-
-#define SAM3S8 ( \
-		SAM_PART_IS_DEFINED(SAM3S8B) ||	\
-		SAM_PART_IS_DEFINED(SAM3S8C) \
-		)
-
-#define SAM3SD8 ( \
-		SAM_PART_IS_DEFINED(SAM3SD8B) || \
-		SAM_PART_IS_DEFINED(SAM3SD8C) \
-		)
-/** @} */
-
-/**
- * \name SAM3U series
- * @{
- */
-#define SAM3U1 ( \
-		SAM_PART_IS_DEFINED(SAM3U1C) ||	\
-		SAM_PART_IS_DEFINED(SAM3U1E) \
-		)
-
-#define SAM3U2 ( \
-		SAM_PART_IS_DEFINED(SAM3U2C) ||	\
-		SAM_PART_IS_DEFINED(SAM3U2E) \
-		)
-
-#define SAM3U4 ( \
-		SAM_PART_IS_DEFINED(SAM3U4C) ||	\
-		SAM_PART_IS_DEFINED(SAM3U4E) \
-		)
-/** @} */
-
-/**
- * \name SAM3N series
- * @{
- */
-#define SAM3N00 ( \
-		SAM_PART_IS_DEFINED(SAM3N00A) ||	\
-		SAM_PART_IS_DEFINED(SAM3N00B) \
-		)
-
-#define SAM3N0 ( \
-		SAM_PART_IS_DEFINED(SAM3N0A) ||	\
-		SAM_PART_IS_DEFINED(SAM3N0B) ||	\
-		SAM_PART_IS_DEFINED(SAM3N0C) \
-		)
-
-#define SAM3N1 ( \
-		SAM_PART_IS_DEFINED(SAM3N1A) ||	\
-		SAM_PART_IS_DEFINED(SAM3N1B) ||	\
-		SAM_PART_IS_DEFINED(SAM3N1C) \
-		)
-
-#define SAM3N2 ( \
-		SAM_PART_IS_DEFINED(SAM3N2A) ||	\
-		SAM_PART_IS_DEFINED(SAM3N2B) ||	\
-		SAM_PART_IS_DEFINED(SAM3N2C) \
-		)
-
-#define SAM3N4 ( \
-		SAM_PART_IS_DEFINED(SAM3N4A) ||	\
-		SAM_PART_IS_DEFINED(SAM3N4B) ||	\
-		SAM_PART_IS_DEFINED(SAM3N4C) \
-		)
-/** @} */
-
-/**
- * \name SAM3X series
- * @{
- */
-#define SAM3X4 ( \
-		SAM_PART_IS_DEFINED(SAM3X4C) ||	\
-		SAM_PART_IS_DEFINED(SAM3X4E) \
-		)
-
-#define SAM3X8 ( \
-		SAM_PART_IS_DEFINED(SAM3X8C) ||	\
-		SAM_PART_IS_DEFINED(SAM3X8E) ||	\
-		SAM_PART_IS_DEFINED(SAM3X8H) \
-		)
-/** @} */
-
-/**
- * \name SAM3A series
- * @{
- */
-#define SAM3A4 ( \
-		SAM_PART_IS_DEFINED(SAM3A4C) \
-		)
-
-#define SAM3A8 ( \
-		SAM_PART_IS_DEFINED(SAM3A8C) \
-		)
-/** @} */
-
-/**
- * \name SAM4S series
- * @{
- */
-#define SAM4S2 ( \
-		SAM_PART_IS_DEFINED(SAM4S2A) || \
- 		SAM_PART_IS_DEFINED(SAM4S2B) || \
- 		SAM_PART_IS_DEFINED(SAM4S2C) \
- 		)
-
-#define SAM4S4 ( \
-		SAM_PART_IS_DEFINED(SAM4S4A) || \
- 		SAM_PART_IS_DEFINED(SAM4S4B) || \
- 		SAM_PART_IS_DEFINED(SAM4S4C) \
- 		)
-
-#define SAM4S8 ( \
-		SAM_PART_IS_DEFINED(SAM4S8B) ||	\
-		SAM_PART_IS_DEFINED(SAM4S8C) \
-		)
-
-#define SAM4S16 ( \
-		SAM_PART_IS_DEFINED(SAM4S16B) || \
-		SAM_PART_IS_DEFINED(SAM4S16C) \
-		)
-
-#define SAM4SA16 ( \
-		SAM_PART_IS_DEFINED(SAM4SA16B) || \
-		SAM_PART_IS_DEFINED(SAM4SA16C)    \
-	)
-
-#define SAM4SD16 ( \
-		SAM_PART_IS_DEFINED(SAM4SD16B) || \
-		SAM_PART_IS_DEFINED(SAM4SD16C)    \
-	)
-
-#define SAM4SD32 ( \
-		SAM_PART_IS_DEFINED(SAM4SD32B) || \
-		SAM_PART_IS_DEFINED(SAM4SD32C)    \
-	)
-/** @} */
-
-/**
- * \name SAM4L series
- * @{
- */
-#define SAM4LS ( \
-		SAM_PART_IS_DEFINED(SAM4LS2A) || \
-		SAM_PART_IS_DEFINED(SAM4LS2B) || \
-		SAM_PART_IS_DEFINED(SAM4LS2C) || \
-		SAM_PART_IS_DEFINED(SAM4LS4A) || \
-		SAM_PART_IS_DEFINED(SAM4LS4B) || \
-		SAM_PART_IS_DEFINED(SAM4LS4C) || \
-		SAM_PART_IS_DEFINED(SAM4LS8A) || \
-		SAM_PART_IS_DEFINED(SAM4LS8B) || \
-		SAM_PART_IS_DEFINED(SAM4LS8C)    \
-		)
-
-#define SAM4LC ( \
-		SAM_PART_IS_DEFINED(SAM4LC2A) || \
-		SAM_PART_IS_DEFINED(SAM4LC2B) || \
-		SAM_PART_IS_DEFINED(SAM4LC2C) || \
-		SAM_PART_IS_DEFINED(SAM4LC4A) || \
-		SAM_PART_IS_DEFINED(SAM4LC4B) || \
-		SAM_PART_IS_DEFINED(SAM4LC4C) || \
-		SAM_PART_IS_DEFINED(SAM4LC8A) || \
-		SAM_PART_IS_DEFINED(SAM4LC8B) || \
-		SAM_PART_IS_DEFINED(SAM4LC8C)    \
-		)
-/** @} */
-
-/**
- * \name SAMD20 series
- * @{
- */
-#define SAMD20J ( \
-		SAM_PART_IS_DEFINED(SAMD20J14) || \
-		SAM_PART_IS_DEFINED(SAMD20J15) || \
-		SAM_PART_IS_DEFINED(SAMD20J16) || \
-		SAM_PART_IS_DEFINED(SAMD20J17) || \
-		SAM_PART_IS_DEFINED(SAMD20J18) \
-	)
-
-#define SAMD20G ( \
-		SAM_PART_IS_DEFINED(SAMD20G14)  || \
-		SAM_PART_IS_DEFINED(SAMD20G15)  || \
-		SAM_PART_IS_DEFINED(SAMD20G16)  || \
-		SAM_PART_IS_DEFINED(SAMD20G17)  || \
-		SAM_PART_IS_DEFINED(SAMD20G17U) || \
-		SAM_PART_IS_DEFINED(SAMD20G18)  || \
-		SAM_PART_IS_DEFINED(SAMD20G18U) \
-	)
-
-#define SAMD20E ( \
-		SAM_PART_IS_DEFINED(SAMD20E14) || \
-		SAM_PART_IS_DEFINED(SAMD20E15) || \
-		SAM_PART_IS_DEFINED(SAMD20E16) || \
-		SAM_PART_IS_DEFINED(SAMD20E17) || \
-		SAM_PART_IS_DEFINED(SAMD20E18) || \
-		SAM_PART_IS_DEFINED(SAMD20E1F) \
-	)
-/** @} */
-
-/**
- * \name SAMD21 series
- * @{
- */
-#define SAMD21J ( \
-		SAM_PART_IS_DEFINED(SAMD21J15A) || \
-		SAM_PART_IS_DEFINED(SAMD21J16A) || \
-		SAM_PART_IS_DEFINED(SAMD21J17A) || \
-		SAM_PART_IS_DEFINED(SAMD21J18A) \
-	)
-
-#define SAMD21G ( \
-		SAM_PART_IS_DEFINED(SAMD21G15A) || \
-		SAM_PART_IS_DEFINED(SAMD21G16A) || \
-		SAM_PART_IS_DEFINED(SAMD21G17A) || \
-		SAM_PART_IS_DEFINED(SAMD21G18A) \
-	)
-
-#define SAMD21E ( \
-		SAM_PART_IS_DEFINED(SAMD21E15A) || \
-		SAM_PART_IS_DEFINED(SAMD21E16A) || \
-		SAM_PART_IS_DEFINED(SAMD21E17A) || \
-		SAM_PART_IS_DEFINED(SAMD21E18A) \
-	)
-/** @} */
-
-/**
- * \name SAMR21 series
- * @{
- */
-#define SAMR21G ( \
-		SAM_PART_IS_DEFINED(SAMR21G16A) || \
-		SAM_PART_IS_DEFINED(SAMR21G17A) || \
-		SAM_PART_IS_DEFINED(SAMR21G18A) \
-	)
-
-#define SAMR21E ( \
-		SAM_PART_IS_DEFINED(SAMR21E16A) || \
-		SAM_PART_IS_DEFINED(SAMR21E17A) || \
-		SAM_PART_IS_DEFINED(SAMR21E18A) \
-	)
-/** @} */
-
-/**
- * \name SAMD10 series
- * @{
- */
-#define SAMD10C ( \
-		SAM_PART_IS_DEFINED(SAMD10C12A) || \
-		SAM_PART_IS_DEFINED(SAMD10C13A) || \
-		SAM_PART_IS_DEFINED(SAMD10C14A) \
-	)
-
-#define SAMD10DS ( \
-		SAM_PART_IS_DEFINED(SAMD10D12AS) || \
-		SAM_PART_IS_DEFINED(SAMD10D13AS) || \
-		SAM_PART_IS_DEFINED(SAMD10D14AS) \
-	)
-
-#define SAMD10DM ( \
-		SAM_PART_IS_DEFINED(SAMD10D12AM) || \
-		SAM_PART_IS_DEFINED(SAMD10D13AM) || \
-		SAM_PART_IS_DEFINED(SAMD10D14AM) \
-	)
-/** @} */
-
-/**
- * \name SAMD11 series
- * @{
- */
-#define SAMD11C ( \
-		SAM_PART_IS_DEFINED(SAMD11C14A) \
-	)
-
-#define SAMD11DS ( \
-		SAM_PART_IS_DEFINED(SAMD11D14AS) \
-	)
-
-#define SAMD11DM ( \
-		SAM_PART_IS_DEFINED(SAMD11D14AM) \
-	)
-/** @} */
-
-/**
- * \name SAM4E series
- * @{
- */
-#define SAM4E8 ( \
-		SAM_PART_IS_DEFINED(SAM4E8C) || \
-		SAM_PART_IS_DEFINED(SAM4E8E) \
-		)
-
-#define SAM4E16 ( \
-		SAM_PART_IS_DEFINED(SAM4E16C) || \
-		SAM_PART_IS_DEFINED(SAM4E16E) \
-		)
-/** @} */
-
-/**
- * \name SAM4N series
- * @{
- */
-#define SAM4N8 ( \
-		SAM_PART_IS_DEFINED(SAM4N8A) || \
-		SAM_PART_IS_DEFINED(SAM4N8B) || \
-		SAM_PART_IS_DEFINED(SAM4N8C) \
-		)
-
-#define SAM4N16 ( \
-		SAM_PART_IS_DEFINED(SAM4N16B) || \
-		SAM_PART_IS_DEFINED(SAM4N16C) \
-		)
-/** @} */
-
-/**
- * \name SAM4C series
- * @{
- */
-#define SAM4C8_0 ( \
-		SAM_PART_IS_DEFINED(SAM4C8C_0) \
-		)
-
-#define SAM4C8_1 ( \
-		SAM_PART_IS_DEFINED(SAM4C8C_1) \
-		)
-
-#define SAM4C8 (SAM4C8_0 || SAM4C8_1)
-
-#define SAM4C16_0 ( \
-		SAM_PART_IS_DEFINED(SAM4C16C_0) \
-		)
-
-#define SAM4C16_1 ( \
-		SAM_PART_IS_DEFINED(SAM4C16C_1) \
-		)
-
-#define SAM4C16 (SAM4C16_0 || SAM4C16_1)
-
-#define SAM4C32_0 ( \
-		SAM_PART_IS_DEFINED(SAM4C32C_0) ||\
-		SAM_PART_IS_DEFINED(SAM4C32E_0) \
-		)
-
-#define SAM4C32_1 ( \
-		SAM_PART_IS_DEFINED(SAM4C32C_1) ||\
-		SAM_PART_IS_DEFINED(SAM4C32E_1) \
-		)
-
-
-#define SAM4C32 (SAM4C32_0 || SAM4C32_1)
-
-/** @} */
-
-/**
- * \name SAM4CM series
- * @{
- */
-#define SAM4CMP8_0 ( \
-		SAM_PART_IS_DEFINED(SAM4CMP8C_0) \
-		)
-
-#define SAM4CMP8_1 ( \
-		SAM_PART_IS_DEFINED(SAM4CMP8C_1) \
-		)
-
-#define SAM4CMP8 (SAM4CMP8_0 || SAM4CMP8_1)
-
-#define SAM4CMP16_0 ( \
-		SAM_PART_IS_DEFINED(SAM4CMP16C_0) \
-		)
-
-#define SAM4CMP16_1 ( \
-		SAM_PART_IS_DEFINED(SAM4CMP16C_1) \
-		)
-
-#define SAM4CMP16 (SAM4CMP16_0 || SAM4CMP16_1)
-
-#define SAM4CMP32_0 ( \
-		SAM_PART_IS_DEFINED(SAM4CMP32C_0) \
-		)
-
-#define SAM4CMP32_1 ( \
-		SAM_PART_IS_DEFINED(SAM4CMP32C_1) \
-		)
-
-#define SAM4CMP32 (SAM4CMP32_0 || SAM4CMP32_1)
-
-#define SAM4CMS8_0 ( \
-		SAM_PART_IS_DEFINED(SAM4CMS8C_0) \
-		)
-
-#define SAM4CMS8_1 ( \
-		SAM_PART_IS_DEFINED(SAM4CMS8C_1) \
-		)
-
-#define SAM4CMS8 (SAM4CMS8_0 || SAM4CMS8_1)
-
-#define SAM4CMS16_0 ( \
-		SAM_PART_IS_DEFINED(SAM4CMS16C_0) \
-		)
-
-#define SAM4CMS16_1 ( \
-		SAM_PART_IS_DEFINED(SAM4CMS16C_1) \
-		)
-
-#define SAM4CMS16 (SAM4CMS16_0 || SAM4CMS16_1)
-
-#define SAM4CMS32_0 ( \
-		SAM_PART_IS_DEFINED(SAM4CMS32C_0) \
-		)
-
-#define SAM4CMS32_1 ( \
-		SAM_PART_IS_DEFINED(SAM4CMS32C_1) \
-		)
-
-#define SAM4CMS32 (SAM4CMS32_0 || SAM4CMS32_1)
-
-/** @} */
-
-/**
- * \name SAM4CP series
- * @{
- */
-#define SAM4CP16_0 ( \
-		SAM_PART_IS_DEFINED(SAM4CP16B_0) \
-		)
-
-#define SAM4CP16_1 ( \
-		SAM_PART_IS_DEFINED(SAM4CP16B_1) \
-		)
-
-#define SAM4CP16 (SAM4CP16_0 || SAM4CP16_1)
-/** @} */
-
-/**
- * \name SAMG series
- * @{
- */
-#define SAMG51 ( \
-		SAM_PART_IS_DEFINED(SAMG51G18) \
-		)
-
-#define SAMG53 ( \
-		SAM_PART_IS_DEFINED(SAMG53G19) ||\
-		SAM_PART_IS_DEFINED(SAMG53N19) \
-		)
-
-#define SAMG54 ( \
-		SAM_PART_IS_DEFINED(SAMG54G19) ||\
-		SAM_PART_IS_DEFINED(SAMG54J19) ||\
-		SAM_PART_IS_DEFINED(SAMG54N19) \
-)
-/** @} */
-/**
- * \name SAM families
- * @{
- */
-/** SAM3S Family */
-#define SAM3S (SAM3S1 || SAM3S2 || SAM3S4 || SAM3S8 || SAM3SD8)
-
-/** SAM3U Family */
-#define SAM3U (SAM3U1 || SAM3U2 || SAM3U4)
-
-/** SAM3N Family */
-#define SAM3N (SAM3N00 || SAM3N0 || SAM3N1 || SAM3N2 || SAM3N4)
-
-/** SAM3XA Family */
-#define SAM3XA (SAM3X4 || SAM3X8 || SAM3A4 || SAM3A8)
-
-/** SAM4S Family */
-#define SAM4S (SAM4S2 || SAM4S4 || SAM4S8 || SAM4S16 || SAM4SA16 || SAM4SD16 || SAM4SD32)
-
-/** SAM4L Family */
-#define SAM4L (SAM4LS || SAM4LC)
-
-/** SAMD20 Family */
-#define SAMD20 (SAMD20J || SAMD20G || SAMD20E)
-
-/** SAMD21 Family */
-#define SAMD21 (SAMD21J || SAMD21G || SAMD21E)
-
-/** SAMD10 Family */
-#define SAMD10 (SAMD10C || SAMD10DS || SAMD10DM)
-
-/** SAMD11 Family */
-#define SAMD11 (SAMD11C || SAMD11DS || SAMD11DM)
-
-/** SAMD Family */
-#define SAMD   (SAMD20 || SAMD21 || SAMD10 || SAMD11)
-
-/** SAMR21 Family */
-#define SAMR21 (SAMR21G || SAMR21E)
-
-/** SAM4E Family */
-#define SAM4E (SAM4E8 || SAM4E16)
-
-/** SAM4N Family */
-#define SAM4N (SAM4N8 || SAM4N16)
-
-/** SAM4C Family */
-#define SAM4C_0 (SAM4C8_0 || SAM4C16_0 || SAM4C32_0)
-#define SAM4C_1 (SAM4C8_1 || SAM4C16_1 || SAM4C32_1)
-#define SAM4C   (SAM4C8 || SAM4C16 || SAM4C32)
-
-/** SAM4CM Family */
-#define SAM4CM_0 (SAM4CMP8_0 || SAM4CMP16_0 || SAM4CMP32_0 || SAM4CMS8_0 || \
-			SAM4CMS16_0 || SAM4CMS32_0)
-#define SAM4CM_1 (SAM4CMP8_1 || SAM4CMP16_1 || SAM4CMP32_1 || SAM4CMS8_1 || \
-			SAM4CMS16_1 || SAM4CMS32_1)
-#define SAM4CM   (SAM4CMP8 || SAM4CMP16 || SAM4CMP32 || SAM4CMS8 || \
-			SAM4CMS16 || SAM4CMS32)
-
-/** SAM4CP Family */
-#define SAM4CP_0 (SAM4CP16_0)
-#define SAM4CP_1 (SAM4CP16_1)
-#define SAM4CP   (SAM4CP16)
-
-/** SAMG Family */
-#define SAMG (SAMG51 || SAMG53 || SAMG54)
-
-/** SAM0 product line (cortex-m0+) */
-#define SAM0 (SAMD20 || SAMD21 || SAMR21 || SAMD10 || SAMD11)
-
-/** @} */
-
-/** SAM product line */
-#define SAM (SAM3S || SAM3U || SAM3N || SAM3XA || SAM4S || SAM4L || SAM4E || \
-		SAM0 || SAM4N || SAM4C || SAM4CM || SAM4CP || SAMG)
-
-/** @} */
-
-/** @} */
-
-/** @} */
-
-#endif /* ATMEL_PARTS_H */
diff --git a/FanBoard/FanControlBoard/src/ASF/mega/utils/assembler.h b/FanBoard/FanControlBoard/src/ASF/mega/utils/assembler.h
deleted file mode 100644
index 17d0c2e..0000000
--- a/FanBoard/FanControlBoard/src/ASF/mega/utils/assembler.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/**
- * \file
- *
- * \brief Assembler abstraction layer and utilities
- *
- * Copyright (c) 2009-2012 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * 3. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * \asf_license_stop
- *
- */
-#ifndef ASSEMBLER_H_INCLUDED
-#define ASSEMBLER_H_INCLUDED
-
-#if !defined(__ASSEMBLER__) && !defined(__IAR_SYSTEMS_ASM__) \
-		&& !defined(__DOXYGEN__)
-# error This file may only be included from assembly files
-#endif
-
-#if defined(__ASSEMBLER__)
-# include "assembler/gas.h"
-# include <avr/io.h>
-#elif defined(__IAR_SYSTEMS_ASM__)
-# include "assembler/iar.h"
-# include <ioavr.h>
-#endif
-
-/**
- * \ingroup group_mega_utils
- * \defgroup assembler_group Assembler Support
- *
- * This group provides a good handful of macros intended to smooth out
- * the differences between various assemblers, similar to what compiler.h does
- * for compilers, except that assemblers tend to be much less standardized than
- * compilers.
- *
- * @{
- */
-
-//! \name Control Statements
-//@{
-/**
- * \def REPEAT(count)
- * \brief Repeat the following statements \a count times
- */
-/**
- * \def END_REPEAT()
- * \brief Mark the end of the statements to be repeated
- */
-/**
- * \def SET_LOC(offset)
- * \brief Set the location counter to \a offset
- */
-/**
- * \def END_FILE()
- * \brief Mark the end of the file
- */
-//@}
-
-//! \name Data Objects
-//@{
-/**
- * \def FILL_BYTES(count)
- * \brief Allocate space for \a count bytes
- */
-//@}
-
-//! \name Symbol Definition
-//@{
-/**
- * \def L(name)
- * \brief Turn \a name into a local symbol, if possible
- */
-/**
- * \def EXTERN_SYMBOL(name)
- * \brief Declare \a name as an external symbol referenced by this file
- */
-/**
- * \def FUNCTION(name)
- * \brief Define a file-local function called \a name
- */
-/**
- * \def PUBLIC_FUNCTION(name)
- * \brief Define a globally visible function called \a name
- */
-/**
- * \def WEAK_FUNCTION(name)
- * \brief Define a weak function called \a name
- *
- * Weak functions are only referenced if no strong definitions are found
- */
-/**
- * \def WEAK_FUNCTION_ALIAS(name, strong_name)
- * \brief Define \a name as a weak alias for the function \a strong_name
- * \sa WEAK_FUNCTION
- */
-/**
- * \def END_FUNC(name)
- * \brief Mark the end of the function called \a name
- */
-//@}
-
-//! \name Section Definition
-//@{
-/**
- * \def TEXT_SECTION(name)
- * \brief Start a new section containing executable code
- */
-/**
- * \def RODATA_SECTION(name)
- * \brief Start a new section containing read-only data
- */
-/**
- * \def DATA_SECTION(name)
- * \brief Start a new section containing writeable initialized data
- */
-/**
- * \def BSS_SECTION(name)
- * \brief Start a new section containing writeable zero-initialized data
- */
-//@}
-
-//! @}
-
-#endif /* ASSEMBLER_H_INCLUDED */
diff --git a/FanBoard/FanControlBoard/src/ASF/mega/utils/assembler/gas.h b/FanBoard/FanControlBoard/src/ASF/mega/utils/assembler/gas.h
deleted file mode 100644
index d3ed0ef..0000000
--- a/FanBoard/FanControlBoard/src/ASF/mega/utils/assembler/gas.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * \file
- *
- * \brief Assembler abstraction layer: GNU Assembler specifics
- *
- * Copyright (c) 2009-2012 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * 3. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * \asf_license_stop
- *
- */
-#ifndef ASSEMBLER_GAS_H_INCLUDED
-#define ASSEMBLER_GAS_H_INCLUDED
-
-#ifndef __DOXYGEN__
-
-	/* IAR doesn't accept dots in macro names */
-	.macro  ld_addr, reg, sym
-	lda.w   \reg, \sym
-	.endm
-
-	/* Define a function \a name that is either globally visible or only
-	 * file-local.
-	 */
-	.macro gas_begin_func name, is_public
-		.if \is_public
-		.global \name
-		.endif
-		.section .text.\name, "ax", @progbits
-		.type \name, @function
-	\name :
-	.endm
-
-	/* Define a function \a name that is either globally visible or only
-	 * file-local in a given segment.
-	 */
-	.macro gas_begin_func_segm name, is_public, segment
-		.if \is_public
-		.global \name
-		.endif
-		.section .\segment, "ax", @progbits
-		.type \name, @function
-	\name :
-	.endm
-
-	/* Define \a name as a weak alias for the function \a strong_name */
-	.macro gas_weak_function_alias name, strong_name
-	.global \name
-	.weak   \name
-	.type   \name, @function
-	.set    \name, \strong_name
-	.endm
-
-	/* Define a weak function called \a name */
-	.macro gas_weak_function name
-	.weak   \name
-	gas_begin_func \name 1
-	.endm
-
-#define REPEAT(count)           .rept   count
-#define END_REPEAT()            .endr
-#define FILL_BYTES(count)       .fill   count
-#define SET_LOC(offset)         .org    offset
-#define L(name)                 .L##name
-#define EXTERN_SYMBOL(name)
-
-#define TEXT_SECTION(name)                              \
-	.section name, "ax", @progbits
-#define RODATA_SECTION(name)                            \
-	.section name, "a", @progbits
-#define DATA_SECTION(name)                              \
-	.section name, "aw", @progbits
-#define BSS_SECTION(name)                               \
-	.section name, "aw", @nobits
-
-#define FUNCTION(name) gas_begin_func name 0
-#define PUBLIC_FUNCTION(name)   gas_begin_func name 1
-#define PUBLIC_FUNCTION_SEGMENT(name, segment)          \
-	gas_begin_func_segm name 1 segment
-#define WEAK_FUNCTION(name) gas_weak_function name
-#define WEAK_FUNCTION_ALIAS(name, strong_name) \
-	gas_weak_function_alias name strong_name
-#define END_FUNC(name)                                  \
-	.size   name, . - name
-
-#define END_FILE()
-
-#endif /* __DOXYGEN__ */
-
-#endif /* ASSEMBLER_GAS_H_INCLUDED */
diff --git a/FanBoard/FanControlBoard/src/ASF/mega/utils/compiler.h b/FanBoard/FanControlBoard/src/ASF/mega/utils/compiler.h
deleted file mode 100644
index 61603f4..0000000
--- a/FanBoard/FanControlBoard/src/ASF/mega/utils/compiler.h
+++ /dev/null
@@ -1,361 +0,0 @@
-/**
- * \file
- *
- * \brief Commonly used includes, types and macros.
- *
- * Copyright (c) 2011-2014 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * 3. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * \asf_license_stop
- *
- */
-#ifndef UTILS_COMPILER_H
-#define UTILS_COMPILER_H
-
-#if defined(__GNUC__)
-#	include <avr/io.h>
-#elif defined(__ICCAVR__)
-#	include <ioavr.h>
-#	include <intrinsics.h>
-#else
-#	error "Unsupported compiler."
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <stddef.h>
-#include <stdlib.h>
-
-#include <parts.h>
-
-#ifdef __ICCAVR__
-/*! \name Compiler Keywords
- *
- * Port of some keywords from GCC to IAR Embedded Workbench.
- */
-//! @{
-#define __asm__              asm
-#define __inline__           inline
-#define __volatile__
-//! @}
-#endif
-
-/**
- * \def UNUSED
- * \brief Marking \a v as a unused parameter or value.
- */
-#define UNUSED(v)          (void)(v)
-
-/**
- * \def unused
- * \brief Marking \a v as a unused parameter or value.
- */
-#define unused(v)          do { (void)(v); } while(0)
-
-/**
- * \def barrier
- * \brief Memory barrier
- */
-#ifdef __GNUC__
-#  define barrier()        asm volatile("" ::: "memory")
-#else
-#  define barrier()        asm ("")
-#endif
-
-/*
- * AVR arch does not care about alignment anyway.
- */
-#define COMPILER_PACK_RESET(alignment)
-#define COMPILER_PACK_SET(alignment)
-
-//_____ M A C R O S ________________________________________________________
-
-
-/**
- * \def __always_inline
- * \brief The function should always be inlined.
- *
- * This annotation instructs the compiler to ignore its inlining
- * heuristics and inline the function no matter how big it thinks it
- * becomes.
- */
-#if (defined __GNUC__)
-#	define __always_inline   inline __attribute__((__always_inline__))
-#elif (defined __ICCAVR__)
-#	define __always_inline   _Pragma("inline=forced")
-#endif
-
-/**
- * \def __always_optimize
- * \brief The function should always be optimized.
- *
- * This annotation instructs the compiler to ignore global optimization
- * settings and always compile the function with a high level of
- * optimization.
- */
-#if (defined __GNUC__)
-	#define __always_optimize   __attribute__((optimize(3)))
-#elif (defined __ICCAVR__)
-	#define __always_optimize   _Pragma("optimize=high")
-#endif
-
-
-/*! \brief This macro is used to test fatal errors.
- *
- * The macro tests if the expression is false. If it is, a fatal error is
- * detected and the application hangs up. If TEST_SUITE_DEFINE_ASSERT_MACRO
- * is defined, a unit test version of the macro is used, to allow execution
- * of further tests after a false expression.
- *
- * \param expr  Expression to evaluate and supposed to be nonzero.
- */
-#if defined(_ASSERT_ENABLE_)
-#  if defined(TEST_SUITE_DEFINE_ASSERT_MACRO)
-	// Assert() is defined in unit_test/suite.h
-#    include "unit_test/suite.h"
-#  else
-#    define Assert(expr) \
-	{\
-		if (!(expr)) while (true);\
-	}
-#  endif
-#else
-#  define Assert(expr) ((void) 0)
-#endif
-
-
-/*! \name MCU Endianism Handling
- */
-//! @{
-#define MSB(u16)             (((uint8_t* )&u16)[1])
-#define LSB(u16)             (((uint8_t* )&u16)[0])
-//! @}
-
-#include "interrupt.h"
-#include "progmem.h"
-
-#if (defined __GNUC__)
-  #define SHORTENUM                           __attribute__ ((packed))
-#elif (defined __ICCAVR__)
-  #define SHORTENUM                           /**/
-#endif
-
-#if (defined __GNUC__)
-  #define FUNC_PTR                            void *
-#elif (defined __ICCAVR__)
-#if (FLASHEND > 0x1FFFF)    // Required for program code larger than 128K
-  #define FUNC_PTR                            void __farflash *
-#else
-  #define FUNC_PTR                            void *
-#endif  /* ENABLE_FAR_FLASH */
-#endif
-
-
-#if (defined __GNUC__)
-  #define FLASH_DECLARE(x)                  const x __attribute__((__progmem__))
-#elif (defined __ICCAVR__)
-  #define FLASH_DECLARE(x)                  const __flash x
-#endif
-
-#if (defined __GNUC__)
-  #define FLASH_EXTERN(x) extern const x
-#elif (defined __ICCAVR__)
-  #define FLASH_EXTERN(x) extern const __flash x
-#endif
-
-
-/*Defines the Flash Storage for the request and response of MAC*/
-#define CMD_ID_OCTET    (0)
-
-/* Converting of values from CPU endian to little endian. */
-#define CPU_ENDIAN_TO_LE16(x)   (x)
-#define CPU_ENDIAN_TO_LE32(x)   (x)
-#define CPU_ENDIAN_TO_LE64(x)   (x)
-
-/* Converting of values from little endian to CPU endian. */
-#define LE16_TO_CPU_ENDIAN(x)   (x)
-#define LE32_TO_CPU_ENDIAN(x)   (x)
-#define LE64_TO_CPU_ENDIAN(x)   (x)
-
-/* Converting of constants from little endian to CPU endian. */
-#define CLE16_TO_CPU_ENDIAN(x)  (x)
-#define CLE32_TO_CPU_ENDIAN(x)  (x)
-#define CLE64_TO_CPU_ENDIAN(x)  (x)
-
-/* Converting of constants from CPU endian to little endian. */
-#define CCPU_ENDIAN_TO_LE16(x)  (x)
-#define CCPU_ENDIAN_TO_LE32(x)  (x)
-#define CCPU_ENDIAN_TO_LE64(x)  (x)
-
-#if (defined __GNUC__)
-  #define ADDR_COPY_DST_SRC_16(dst, src)  memcpy((&(dst)), (&(src)), sizeof(uint16_t))
-  #define ADDR_COPY_DST_SRC_64(dst, src)  memcpy((&(dst)), (&(src)), sizeof(uint64_t))
-
-/* Converts a 2 Byte array into a 16-Bit value */
-#define convert_byte_array_to_16_bit(data) \
-    (*(uint16_t *)(data))
-
-/* Converts a 4 Byte array into a 32-Bit value */
-#define convert_byte_array_to_32_bit(data) \
-    (*(uint32_t *)(data))
-
-/* Converts a 8 Byte array into a 64-Bit value */
-#define convert_byte_array_to_64_bit(data) \
-    (*(uint64_t *)(data))
-
-/* Converts a 16-Bit value into a 2 Byte array */
-#define convert_16_bit_to_byte_array(value, data) \
-    ((*(uint16_t *)(data)) = (uint16_t)(value))
-
-/* Converts spec 16-Bit value into a 2 Byte array */
-#define convert_spec_16_bit_to_byte_array(value, data) \
-    ((*(uint16_t *)(data)) = (uint16_t)(value))
-
-/* Converts spec 16-Bit value into a 2 Byte array */
-#define convert_16_bit_to_byte_address(value, data) \
-    ((*(uint16_t *)(data)) = (uint16_t)(value))
-
-/* Converts a 32-Bit value into a 4 Byte array */
-#define convert_32_bit_to_byte_array(value, data) \
-    ((*(uint32_t *)(data)) = (uint32_t)(value))
-
-/* Converts a 64-Bit value into  a 8 Byte array */
-/* Here memcpy requires much less footprint */
-#define convert_64_bit_to_byte_array(value, data) \
-    memcpy((data), (&(value)), sizeof(uint64_t))
-
-#elif (defined __ICCAVR__)
-  #define ADDR_COPY_DST_SRC_16(dst, src)  ((dst) = (src))
-  #define ADDR_COPY_DST_SRC_64(dst, src)  ((dst) = (src))
-
-/* Converts a 2 Byte array into a 16-Bit value */
-#define convert_byte_array_to_16_bit(data) \
-    (*(uint16_t *)(data))
-
-/* Converts a 4 Byte array into a 32-Bit value */
-#define convert_byte_array_to_32_bit(data) \
-    (*(uint32_t *)(data))
-
-/* Converts a 8 Byte array into a 64-Bit value */
-#define convert_byte_array_to_64_bit(data) \
-    (*(uint64_t *)(data))
-
-/* Converts a 16-Bit value into a 2 Byte array */
-#define convert_16_bit_to_byte_array(value, data) \
-    ((*(uint16_t *)(data)) = (uint16_t)(value))
-
-/* Converts spec 16-Bit value into a 2 Byte array */
-#define convert_spec_16_bit_to_byte_array(value, data) \
-    ((*(uint16_t *)(data)) = (uint16_t)(value))
-
-/* Converts spec 16-Bit value into a 2 Byte array */
-#define convert_16_bit_to_byte_address(value, data) \
-    ((*(uint16_t *)(data)) = (uint16_t)(value))
-
-/* Converts a 32-Bit value into a 4 Byte array */
-#define convert_32_bit_to_byte_array(value, data) \
-    ((*(uint32_t *)(data)) = (uint32_t)(value))
-
-/* Converts a 64-Bit value into  a 8 Byte array */
-#define convert_64_bit_to_byte_array(value, data) \
-    ((*(uint64_t *)(data)) = (uint64_t)(value))
-#endif
-
-#define MEMCPY_ENDIAN memcpy
-#define PGM_READ_BLOCK(dst, src, len) memcpy_P((dst), (src), (len))
-
-#if (defined __GNUC__)
-  #define PGM_READ_BYTE(x) pgm_read_byte(x)
-  #define PGM_READ_WORD(x) pgm_read_word(x)
-#elif (defined __ICCAVR__)
-  #define PGM_READ_BYTE(x) *(x)
-  #define PGM_READ_WORD(x) *(x)
-#endif
-
-
-typedef uint8_t                 U8 ;  //!< 8-bit unsigned integer.
-typedef uint16_t                U16;  //!< 16-bit unsigned integer.
-typedef uint32_t                U32;  //!< 32-bit unsigned integer.
-typedef unsigned long long int  U64;  //!< 64-bit unsigned integer.
-
-/*! \brief Toggles the endianism of \a u16 (by swapping its bytes).
- *
- * \param u16 U16 of which to toggle the endianism.
- *
- * \return Value resulting from \a u16 with toggled endianism.
- *
- * \note More optimized if only used with values known at compile time.
- */
-#define Swap16(u16) ((U16)(((U16)(u16) >> 8) |\
-                           ((U16)(u16) << 8)))
-
-/*! \brief Toggles the endianism of \a u32 (by swapping its bytes).
- *
- * \param u32 U32 of which to toggle the endianism.
- *
- * \return Value resulting from \a u32 with toggled endianism.
- *
- * \note More optimized if only used with values known at compile time.
- */
-#define Swap32(u32) ((U32)(((U32)Swap16((U32)(u32) >> 16)) |\
-                           ((U32)Swap16((U32)(u32)) << 16)))
-
-/*! \brief Toggles the endianism of \a u64 (by swapping its bytes).
- *
- * \param u64 U64 of which to toggle the endianism.
- *
- * \return Value resulting from \a u64 with toggled endianism.
- *
- * \note More optimized if only used with values known at compile time.
- */
-#define Swap64(u64) ((U64)(((U64)Swap32((U64)(u64) >> 32)) |\
-                           ((U64)Swap32((U64)(u64)) << 32)))
-						   
-#if (defined __GNUC__)
-  #define nop() do { __asm__ __volatile__ ("nop"); } while (0)
-#elif (defined __ICCAVR__)
-  #define nop() __no_operation()
-#endif
-
-#if (defined __GNUC__)
-#define FORCE_INLINE(type, name, ...) \
-    static inline type name(__VA_ARGS__) __attribute__((always_inline)); \
-    static inline type name(__VA_ARGS__)
-#elif (defined __ICCAVR__)
-#define FORCE_INLINE(type, name, ...) \
-    PRAGMA(inline=forced) \
-    static inline type name(__VA_ARGS__)
-#endif
-
-#endif  // UTILS_COMPILER_H
diff --git a/FanBoard/FanControlBoard/src/ASF/mega/utils/preprocessor/mrepeat.h b/FanBoard/FanControlBoard/src/ASF/mega/utils/preprocessor/mrepeat.h
deleted file mode 100644
index ee0be75..0000000
--- a/FanBoard/FanControlBoard/src/ASF/mega/utils/preprocessor/mrepeat.h
+++ /dev/null
@@ -1,335 +0,0 @@
-/**
- * \file
- *
- * \brief Preprocessor macro repeating utils.
- *
- * Copyright (c) 2013 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * 3. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * \asf_license_stop
- *
- */
-#ifndef _MREPEAT_H_
-#define _MREPEAT_H_
-
-/**
- * \defgroup group_mega_utils_mrepeat Macro Repeat
- *
- * \ingroup group_mega_utils
- *
- * \{
- */
-
-#include "preprocessor.h"
-
-
-//! Maximal number of repetitions supported by MREPEAT.
-#define MREPEAT_LIMIT   256
-
-/*! \brief Macro repeat.
- *
- * This macro represents a horizontal repetition construct.
- *
- * \param count  The number of repetitious calls to macro. Valid values range from 0 to MREPEAT_LIMIT.
- * \param macro  A binary operation of the form macro(n, data). This macro is expanded by MREPEAT with
- *               the current repetition number and the auxiliary data argument.
- * \param data   Auxiliary data passed to macro.
- *
- * \return       <tt>macro(0, data) macro(1, data) ... macro(count - 1, data)</tt>
- */
-#define MREPEAT(count, macro, data)         TPASTE2(MREPEAT, count)(macro, data)
-
-#define MREPEAT0(  macro, data)
-#define MREPEAT1(  macro, data)       MREPEAT0(  macro, data)   macro(  0, data)
-#define MREPEAT2(  macro, data)       MREPEAT1(  macro, data)   macro(  1, data)
-#define MREPEAT3(  macro, data)       MREPEAT2(  macro, data)   macro(  2, data)
-#define MREPEAT4(  macro, data)       MREPEAT3(  macro, data)   macro(  3, data)
-#define MREPEAT5(  macro, data)       MREPEAT4(  macro, data)   macro(  4, data)
-#define MREPEAT6(  macro, data)       MREPEAT5(  macro, data)   macro(  5, data)
-#define MREPEAT7(  macro, data)       MREPEAT6(  macro, data)   macro(  6, data)
-#define MREPEAT8(  macro, data)       MREPEAT7(  macro, data)   macro(  7, data)
-#define MREPEAT9(  macro, data)       MREPEAT8(  macro, data)   macro(  8, data)
-#define MREPEAT10( macro, data)       MREPEAT9(  macro, data)   macro(  9, data)
-#define MREPEAT11( macro, data)       MREPEAT10( macro, data)   macro( 10, data)
-#define MREPEAT12( macro, data)       MREPEAT11( macro, data)   macro( 11, data)
-#define MREPEAT13( macro, data)       MREPEAT12( macro, data)   macro( 12, data)
-#define MREPEAT14( macro, data)       MREPEAT13( macro, data)   macro( 13, data)
-#define MREPEAT15( macro, data)       MREPEAT14( macro, data)   macro( 14, data)
-#define MREPEAT16( macro, data)       MREPEAT15( macro, data)   macro( 15, data)
-#define MREPEAT17( macro, data)       MREPEAT16( macro, data)   macro( 16, data)
-#define MREPEAT18( macro, data)       MREPEAT17( macro, data)   macro( 17, data)
-#define MREPEAT19( macro, data)       MREPEAT18( macro, data)   macro( 18, data)
-#define MREPEAT20( macro, data)       MREPEAT19( macro, data)   macro( 19, data)
-#define MREPEAT21( macro, data)       MREPEAT20( macro, data)   macro( 20, data)
-#define MREPEAT22( macro, data)       MREPEAT21( macro, data)   macro( 21, data)
-#define MREPEAT23( macro, data)       MREPEAT22( macro, data)   macro( 22, data)
-#define MREPEAT24( macro, data)       MREPEAT23( macro, data)   macro( 23, data)
-#define MREPEAT25( macro, data)       MREPEAT24( macro, data)   macro( 24, data)
-#define MREPEAT26( macro, data)       MREPEAT25( macro, data)   macro( 25, data)
-#define MREPEAT27( macro, data)       MREPEAT26( macro, data)   macro( 26, data)
-#define MREPEAT28( macro, data)       MREPEAT27( macro, data)   macro( 27, data)
-#define MREPEAT29( macro, data)       MREPEAT28( macro, data)   macro( 28, data)
-#define MREPEAT30( macro, data)       MREPEAT29( macro, data)   macro( 29, data)
-#define MREPEAT31( macro, data)       MREPEAT30( macro, data)   macro( 30, data)
-#define MREPEAT32( macro, data)       MREPEAT31( macro, data)   macro( 31, data)
-#define MREPEAT33( macro, data)       MREPEAT32( macro, data)   macro( 32, data)
-#define MREPEAT34( macro, data)       MREPEAT33( macro, data)   macro( 33, data)
-#define MREPEAT35( macro, data)       MREPEAT34( macro, data)   macro( 34, data)
-#define MREPEAT36( macro, data)       MREPEAT35( macro, data)   macro( 35, data)
-#define MREPEAT37( macro, data)       MREPEAT36( macro, data)   macro( 36, data)
-#define MREPEAT38( macro, data)       MREPEAT37( macro, data)   macro( 37, data)
-#define MREPEAT39( macro, data)       MREPEAT38( macro, data)   macro( 38, data)
-#define MREPEAT40( macro, data)       MREPEAT39( macro, data)   macro( 39, data)
-#define MREPEAT41( macro, data)       MREPEAT40( macro, data)   macro( 40, data)
-#define MREPEAT42( macro, data)       MREPEAT41( macro, data)   macro( 41, data)
-#define MREPEAT43( macro, data)       MREPEAT42( macro, data)   macro( 42, data)
-#define MREPEAT44( macro, data)       MREPEAT43( macro, data)   macro( 43, data)
-#define MREPEAT45( macro, data)       MREPEAT44( macro, data)   macro( 44, data)
-#define MREPEAT46( macro, data)       MREPEAT45( macro, data)   macro( 45, data)
-#define MREPEAT47( macro, data)       MREPEAT46( macro, data)   macro( 46, data)
-#define MREPEAT48( macro, data)       MREPEAT47( macro, data)   macro( 47, data)
-#define MREPEAT49( macro, data)       MREPEAT48( macro, data)   macro( 48, data)
-#define MREPEAT50( macro, data)       MREPEAT49( macro, data)   macro( 49, data)
-#define MREPEAT51( macro, data)       MREPEAT50( macro, data)   macro( 50, data)
-#define MREPEAT52( macro, data)       MREPEAT51( macro, data)   macro( 51, data)
-#define MREPEAT53( macro, data)       MREPEAT52( macro, data)   macro( 52, data)
-#define MREPEAT54( macro, data)       MREPEAT53( macro, data)   macro( 53, data)
-#define MREPEAT55( macro, data)       MREPEAT54( macro, data)   macro( 54, data)
-#define MREPEAT56( macro, data)       MREPEAT55( macro, data)   macro( 55, data)
-#define MREPEAT57( macro, data)       MREPEAT56( macro, data)   macro( 56, data)
-#define MREPEAT58( macro, data)       MREPEAT57( macro, data)   macro( 57, data)
-#define MREPEAT59( macro, data)       MREPEAT58( macro, data)   macro( 58, data)
-#define MREPEAT60( macro, data)       MREPEAT59( macro, data)   macro( 59, data)
-#define MREPEAT61( macro, data)       MREPEAT60( macro, data)   macro( 60, data)
-#define MREPEAT62( macro, data)       MREPEAT61( macro, data)   macro( 61, data)
-#define MREPEAT63( macro, data)       MREPEAT62( macro, data)   macro( 62, data)
-#define MREPEAT64( macro, data)       MREPEAT63( macro, data)   macro( 63, data)
-#define MREPEAT65( macro, data)       MREPEAT64( macro, data)   macro( 64, data)
-#define MREPEAT66( macro, data)       MREPEAT65( macro, data)   macro( 65, data)
-#define MREPEAT67( macro, data)       MREPEAT66( macro, data)   macro( 66, data)
-#define MREPEAT68( macro, data)       MREPEAT67( macro, data)   macro( 67, data)
-#define MREPEAT69( macro, data)       MREPEAT68( macro, data)   macro( 68, data)
-#define MREPEAT70( macro, data)       MREPEAT69( macro, data)   macro( 69, data)
-#define MREPEAT71( macro, data)       MREPEAT70( macro, data)   macro( 70, data)
-#define MREPEAT72( macro, data)       MREPEAT71( macro, data)   macro( 71, data)
-#define MREPEAT73( macro, data)       MREPEAT72( macro, data)   macro( 72, data)
-#define MREPEAT74( macro, data)       MREPEAT73( macro, data)   macro( 73, data)
-#define MREPEAT75( macro, data)       MREPEAT74( macro, data)   macro( 74, data)
-#define MREPEAT76( macro, data)       MREPEAT75( macro, data)   macro( 75, data)
-#define MREPEAT77( macro, data)       MREPEAT76( macro, data)   macro( 76, data)
-#define MREPEAT78( macro, data)       MREPEAT77( macro, data)   macro( 77, data)
-#define MREPEAT79( macro, data)       MREPEAT78( macro, data)   macro( 78, data)
-#define MREPEAT80( macro, data)       MREPEAT79( macro, data)   macro( 79, data)
-#define MREPEAT81( macro, data)       MREPEAT80( macro, data)   macro( 80, data)
-#define MREPEAT82( macro, data)       MREPEAT81( macro, data)   macro( 81, data)
-#define MREPEAT83( macro, data)       MREPEAT82( macro, data)   macro( 82, data)
-#define MREPEAT84( macro, data)       MREPEAT83( macro, data)   macro( 83, data)
-#define MREPEAT85( macro, data)       MREPEAT84( macro, data)   macro( 84, data)
-#define MREPEAT86( macro, data)       MREPEAT85( macro, data)   macro( 85, data)
-#define MREPEAT87( macro, data)       MREPEAT86( macro, data)   macro( 86, data)
-#define MREPEAT88( macro, data)       MREPEAT87( macro, data)   macro( 87, data)
-#define MREPEAT89( macro, data)       MREPEAT88( macro, data)   macro( 88, data)
-#define MREPEAT90( macro, data)       MREPEAT89( macro, data)   macro( 89, data)
-#define MREPEAT91( macro, data)       MREPEAT90( macro, data)   macro( 90, data)
-#define MREPEAT92( macro, data)       MREPEAT91( macro, data)   macro( 91, data)
-#define MREPEAT93( macro, data)       MREPEAT92( macro, data)   macro( 92, data)
-#define MREPEAT94( macro, data)       MREPEAT93( macro, data)   macro( 93, data)
-#define MREPEAT95( macro, data)       MREPEAT94( macro, data)   macro( 94, data)
-#define MREPEAT96( macro, data)       MREPEAT95( macro, data)   macro( 95, data)
-#define MREPEAT97( macro, data)       MREPEAT96( macro, data)   macro( 96, data)
-#define MREPEAT98( macro, data)       MREPEAT97( macro, data)   macro( 97, data)
-#define MREPEAT99( macro, data)       MREPEAT98( macro, data)   macro( 98, data)
-#define MREPEAT100(macro, data)       MREPEAT99( macro, data)   macro( 99, data)
-#define MREPEAT101(macro, data)       MREPEAT100(macro, data)   macro(100, data)
-#define MREPEAT102(macro, data)       MREPEAT101(macro, data)   macro(101, data)
-#define MREPEAT103(macro, data)       MREPEAT102(macro, data)   macro(102, data)
-#define MREPEAT104(macro, data)       MREPEAT103(macro, data)   macro(103, data)
-#define MREPEAT105(macro, data)       MREPEAT104(macro, data)   macro(104, data)
-#define MREPEAT106(macro, data)       MREPEAT105(macro, data)   macro(105, data)
-#define MREPEAT107(macro, data)       MREPEAT106(macro, data)   macro(106, data)
-#define MREPEAT108(macro, data)       MREPEAT107(macro, data)   macro(107, data)
-#define MREPEAT109(macro, data)       MREPEAT108(macro, data)   macro(108, data)
-#define MREPEAT110(macro, data)       MREPEAT109(macro, data)   macro(109, data)
-#define MREPEAT111(macro, data)       MREPEAT110(macro, data)   macro(110, data)
-#define MREPEAT112(macro, data)       MREPEAT111(macro, data)   macro(111, data)
-#define MREPEAT113(macro, data)       MREPEAT112(macro, data)   macro(112, data)
-#define MREPEAT114(macro, data)       MREPEAT113(macro, data)   macro(113, data)
-#define MREPEAT115(macro, data)       MREPEAT114(macro, data)   macro(114, data)
-#define MREPEAT116(macro, data)       MREPEAT115(macro, data)   macro(115, data)
-#define MREPEAT117(macro, data)       MREPEAT116(macro, data)   macro(116, data)
-#define MREPEAT118(macro, data)       MREPEAT117(macro, data)   macro(117, data)
-#define MREPEAT119(macro, data)       MREPEAT118(macro, data)   macro(118, data)
-#define MREPEAT120(macro, data)       MREPEAT119(macro, data)   macro(119, data)
-#define MREPEAT121(macro, data)       MREPEAT120(macro, data)   macro(120, data)
-#define MREPEAT122(macro, data)       MREPEAT121(macro, data)   macro(121, data)
-#define MREPEAT123(macro, data)       MREPEAT122(macro, data)   macro(122, data)
-#define MREPEAT124(macro, data)       MREPEAT123(macro, data)   macro(123, data)
-#define MREPEAT125(macro, data)       MREPEAT124(macro, data)   macro(124, data)
-#define MREPEAT126(macro, data)       MREPEAT125(macro, data)   macro(125, data)
-#define MREPEAT127(macro, data)       MREPEAT126(macro, data)   macro(126, data)
-#define MREPEAT128(macro, data)       MREPEAT127(macro, data)   macro(127, data)
-#define MREPEAT129(macro, data)       MREPEAT128(macro, data)   macro(128, data)
-#define MREPEAT130(macro, data)       MREPEAT129(macro, data)   macro(129, data)
-#define MREPEAT131(macro, data)       MREPEAT130(macro, data)   macro(130, data)
-#define MREPEAT132(macro, data)       MREPEAT131(macro, data)   macro(131, data)
-#define MREPEAT133(macro, data)       MREPEAT132(macro, data)   macro(132, data)
-#define MREPEAT134(macro, data)       MREPEAT133(macro, data)   macro(133, data)
-#define MREPEAT135(macro, data)       MREPEAT134(macro, data)   macro(134, data)
-#define MREPEAT136(macro, data)       MREPEAT135(macro, data)   macro(135, data)
-#define MREPEAT137(macro, data)       MREPEAT136(macro, data)   macro(136, data)
-#define MREPEAT138(macro, data)       MREPEAT137(macro, data)   macro(137, data)
-#define MREPEAT139(macro, data)       MREPEAT138(macro, data)   macro(138, data)
-#define MREPEAT140(macro, data)       MREPEAT139(macro, data)   macro(139, data)
-#define MREPEAT141(macro, data)       MREPEAT140(macro, data)   macro(140, data)
-#define MREPEAT142(macro, data)       MREPEAT141(macro, data)   macro(141, data)
-#define MREPEAT143(macro, data)       MREPEAT142(macro, data)   macro(142, data)
-#define MREPEAT144(macro, data)       MREPEAT143(macro, data)   macro(143, data)
-#define MREPEAT145(macro, data)       MREPEAT144(macro, data)   macro(144, data)
-#define MREPEAT146(macro, data)       MREPEAT145(macro, data)   macro(145, data)
-#define MREPEAT147(macro, data)       MREPEAT146(macro, data)   macro(146, data)
-#define MREPEAT148(macro, data)       MREPEAT147(macro, data)   macro(147, data)
-#define MREPEAT149(macro, data)       MREPEAT148(macro, data)   macro(148, data)
-#define MREPEAT150(macro, data)       MREPEAT149(macro, data)   macro(149, data)
-#define MREPEAT151(macro, data)       MREPEAT150(macro, data)   macro(150, data)
-#define MREPEAT152(macro, data)       MREPEAT151(macro, data)   macro(151, data)
-#define MREPEAT153(macro, data)       MREPEAT152(macro, data)   macro(152, data)
-#define MREPEAT154(macro, data)       MREPEAT153(macro, data)   macro(153, data)
-#define MREPEAT155(macro, data)       MREPEAT154(macro, data)   macro(154, data)
-#define MREPEAT156(macro, data)       MREPEAT155(macro, data)   macro(155, data)
-#define MREPEAT157(macro, data)       MREPEAT156(macro, data)   macro(156, data)
-#define MREPEAT158(macro, data)       MREPEAT157(macro, data)   macro(157, data)
-#define MREPEAT159(macro, data)       MREPEAT158(macro, data)   macro(158, data)
-#define MREPEAT160(macro, data)       MREPEAT159(macro, data)   macro(159, data)
-#define MREPEAT161(macro, data)       MREPEAT160(macro, data)   macro(160, data)
-#define MREPEAT162(macro, data)       MREPEAT161(macro, data)   macro(161, data)
-#define MREPEAT163(macro, data)       MREPEAT162(macro, data)   macro(162, data)
-#define MREPEAT164(macro, data)       MREPEAT163(macro, data)   macro(163, data)
-#define MREPEAT165(macro, data)       MREPEAT164(macro, data)   macro(164, data)
-#define MREPEAT166(macro, data)       MREPEAT165(macro, data)   macro(165, data)
-#define MREPEAT167(macro, data)       MREPEAT166(macro, data)   macro(166, data)
-#define MREPEAT168(macro, data)       MREPEAT167(macro, data)   macro(167, data)
-#define MREPEAT169(macro, data)       MREPEAT168(macro, data)   macro(168, data)
-#define MREPEAT170(macro, data)       MREPEAT169(macro, data)   macro(169, data)
-#define MREPEAT171(macro, data)       MREPEAT170(macro, data)   macro(170, data)
-#define MREPEAT172(macro, data)       MREPEAT171(macro, data)   macro(171, data)
-#define MREPEAT173(macro, data)       MREPEAT172(macro, data)   macro(172, data)
-#define MREPEAT174(macro, data)       MREPEAT173(macro, data)   macro(173, data)
-#define MREPEAT175(macro, data)       MREPEAT174(macro, data)   macro(174, data)
-#define MREPEAT176(macro, data)       MREPEAT175(macro, data)   macro(175, data)
-#define MREPEAT177(macro, data)       MREPEAT176(macro, data)   macro(176, data)
-#define MREPEAT178(macro, data)       MREPEAT177(macro, data)   macro(177, data)
-#define MREPEAT179(macro, data)       MREPEAT178(macro, data)   macro(178, data)
-#define MREPEAT180(macro, data)       MREPEAT179(macro, data)   macro(179, data)
-#define MREPEAT181(macro, data)       MREPEAT180(macro, data)   macro(180, data)
-#define MREPEAT182(macro, data)       MREPEAT181(macro, data)   macro(181, data)
-#define MREPEAT183(macro, data)       MREPEAT182(macro, data)   macro(182, data)
-#define MREPEAT184(macro, data)       MREPEAT183(macro, data)   macro(183, data)
-#define MREPEAT185(macro, data)       MREPEAT184(macro, data)   macro(184, data)
-#define MREPEAT186(macro, data)       MREPEAT185(macro, data)   macro(185, data)
-#define MREPEAT187(macro, data)       MREPEAT186(macro, data)   macro(186, data)
-#define MREPEAT188(macro, data)       MREPEAT187(macro, data)   macro(187, data)
-#define MREPEAT189(macro, data)       MREPEAT188(macro, data)   macro(188, data)
-#define MREPEAT190(macro, data)       MREPEAT189(macro, data)   macro(189, data)
-#define MREPEAT191(macro, data)       MREPEAT190(macro, data)   macro(190, data)
-#define MREPEAT192(macro, data)       MREPEAT191(macro, data)   macro(191, data)
-#define MREPEAT193(macro, data)       MREPEAT192(macro, data)   macro(192, data)
-#define MREPEAT194(macro, data)       MREPEAT193(macro, data)   macro(193, data)
-#define MREPEAT195(macro, data)       MREPEAT194(macro, data)   macro(194, data)
-#define MREPEAT196(macro, data)       MREPEAT195(macro, data)   macro(195, data)
-#define MREPEAT197(macro, data)       MREPEAT196(macro, data)   macro(196, data)
-#define MREPEAT198(macro, data)       MREPEAT197(macro, data)   macro(197, data)
-#define MREPEAT199(macro, data)       MREPEAT198(macro, data)   macro(198, data)
-#define MREPEAT200(macro, data)       MREPEAT199(macro, data)   macro(199, data)
-#define MREPEAT201(macro, data)       MREPEAT200(macro, data)   macro(200, data)
-#define MREPEAT202(macro, data)       MREPEAT201(macro, data)   macro(201, data)
-#define MREPEAT203(macro, data)       MREPEAT202(macro, data)   macro(202, data)
-#define MREPEAT204(macro, data)       MREPEAT203(macro, data)   macro(203, data)
-#define MREPEAT205(macro, data)       MREPEAT204(macro, data)   macro(204, data)
-#define MREPEAT206(macro, data)       MREPEAT205(macro, data)   macro(205, data)
-#define MREPEAT207(macro, data)       MREPEAT206(macro, data)   macro(206, data)
-#define MREPEAT208(macro, data)       MREPEAT207(macro, data)   macro(207, data)
-#define MREPEAT209(macro, data)       MREPEAT208(macro, data)   macro(208, data)
-#define MREPEAT210(macro, data)       MREPEAT209(macro, data)   macro(209, data)
-#define MREPEAT211(macro, data)       MREPEAT210(macro, data)   macro(210, data)
-#define MREPEAT212(macro, data)       MREPEAT211(macro, data)   macro(211, data)
-#define MREPEAT213(macro, data)       MREPEAT212(macro, data)   macro(212, data)
-#define MREPEAT214(macro, data)       MREPEAT213(macro, data)   macro(213, data)
-#define MREPEAT215(macro, data)       MREPEAT214(macro, data)   macro(214, data)
-#define MREPEAT216(macro, data)       MREPEAT215(macro, data)   macro(215, data)
-#define MREPEAT217(macro, data)       MREPEAT216(macro, data)   macro(216, data)
-#define MREPEAT218(macro, data)       MREPEAT217(macro, data)   macro(217, data)
-#define MREPEAT219(macro, data)       MREPEAT218(macro, data)   macro(218, data)
-#define MREPEAT220(macro, data)       MREPEAT219(macro, data)   macro(219, data)
-#define MREPEAT221(macro, data)       MREPEAT220(macro, data)   macro(220, data)
-#define MREPEAT222(macro, data)       MREPEAT221(macro, data)   macro(221, data)
-#define MREPEAT223(macro, data)       MREPEAT222(macro, data)   macro(222, data)
-#define MREPEAT224(macro, data)       MREPEAT223(macro, data)   macro(223, data)
-#define MREPEAT225(macro, data)       MREPEAT224(macro, data)   macro(224, data)
-#define MREPEAT226(macro, data)       MREPEAT225(macro, data)   macro(225, data)
-#define MREPEAT227(macro, data)       MREPEAT226(macro, data)   macro(226, data)
-#define MREPEAT228(macro, data)       MREPEAT227(macro, data)   macro(227, data)
-#define MREPEAT229(macro, data)       MREPEAT228(macro, data)   macro(228, data)
-#define MREPEAT230(macro, data)       MREPEAT229(macro, data)   macro(229, data)
-#define MREPEAT231(macro, data)       MREPEAT230(macro, data)   macro(230, data)
-#define MREPEAT232(macro, data)       MREPEAT231(macro, data)   macro(231, data)
-#define MREPEAT233(macro, data)       MREPEAT232(macro, data)   macro(232, data)
-#define MREPEAT234(macro, data)       MREPEAT233(macro, data)   macro(233, data)
-#define MREPEAT235(macro, data)       MREPEAT234(macro, data)   macro(234, data)
-#define MREPEAT236(macro, data)       MREPEAT235(macro, data)   macro(235, data)
-#define MREPEAT237(macro, data)       MREPEAT236(macro, data)   macro(236, data)
-#define MREPEAT238(macro, data)       MREPEAT237(macro, data)   macro(237, data)
-#define MREPEAT239(macro, data)       MREPEAT238(macro, data)   macro(238, data)
-#define MREPEAT240(macro, data)       MREPEAT239(macro, data)   macro(239, data)
-#define MREPEAT241(macro, data)       MREPEAT240(macro, data)   macro(240, data)
-#define MREPEAT242(macro, data)       MREPEAT241(macro, data)   macro(241, data)
-#define MREPEAT243(macro, data)       MREPEAT242(macro, data)   macro(242, data)
-#define MREPEAT244(macro, data)       MREPEAT243(macro, data)   macro(243, data)
-#define MREPEAT245(macro, data)       MREPEAT244(macro, data)   macro(244, data)
-#define MREPEAT246(macro, data)       MREPEAT245(macro, data)   macro(245, data)
-#define MREPEAT247(macro, data)       MREPEAT246(macro, data)   macro(246, data)
-#define MREPEAT248(macro, data)       MREPEAT247(macro, data)   macro(247, data)
-#define MREPEAT249(macro, data)       MREPEAT248(macro, data)   macro(248, data)
-#define MREPEAT250(macro, data)       MREPEAT249(macro, data)   macro(249, data)
-#define MREPEAT251(macro, data)       MREPEAT250(macro, data)   macro(250, data)
-#define MREPEAT252(macro, data)       MREPEAT251(macro, data)   macro(251, data)
-#define MREPEAT253(macro, data)       MREPEAT252(macro, data)   macro(252, data)
-#define MREPEAT254(macro, data)       MREPEAT253(macro, data)   macro(253, data)
-#define MREPEAT255(macro, data)       MREPEAT254(macro, data)   macro(254, data)
-#define MREPEAT256(macro, data)       MREPEAT255(macro, data)   macro(255, data)
-
-/**
- * \}
- */
-
-#endif  // _MREPEAT_H_
diff --git a/FanBoard/FanControlBoard/src/ASF/mega/utils/preprocessor/preprocessor.h b/FanBoard/FanControlBoard/src/ASF/mega/utils/preprocessor/preprocessor.h
deleted file mode 100644
index ecc1a9d..0000000
--- a/FanBoard/FanControlBoard/src/ASF/mega/utils/preprocessor/preprocessor.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * \file
- *
- * \brief Preprocessor utils.
- *
- * Copyright (c) 2013 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * 3. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * \asf_license_stop
- *
- */
-#ifndef _PREPROCESSOR_H_
-#define _PREPROCESSOR_H_
-
-#include "tpaste.h"
-#include "stringz.h"
-#include "mrepeat.h"
-
-
-#endif  // _PREPROCESSOR_H_
diff --git a/FanBoard/FanControlBoard/src/ASF/mega/utils/preprocessor/stringz.h b/FanBoard/FanControlBoard/src/ASF/mega/utils/preprocessor/stringz.h
deleted file mode 100644
index e9ddcae..0000000
--- a/FanBoard/FanControlBoard/src/ASF/mega/utils/preprocessor/stringz.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * \file
- *
- * \brief Preprocessor stringizing utils.
- *
- * Copyright (c) 2013 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * 3. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * \asf_license_stop
- *
- */
-#ifndef _STRINGZ_H_
-#define _STRINGZ_H_
-
-/**
- * \defgroup group_mega_utils_stringz Stringize
- *
- * \ingroup group_mega_utils
- *
- * \{
- */
-
-/*! \brief Stringize.
- *
- * Stringize a preprocessing token, this token being allowed to be \#defined.
- *
- * May be used only within macros with the token passed as an argument if the token is \#defined.
- *
- * For example, writing STRINGZ(PIN) within a macro \#defined by PIN_NAME(PIN)
- * and invoked as PIN_NAME(PIN0) with PIN0 \#defined as A0 is equivalent to
- * writing "A0".
- */
-#define STRINGZ(x)                                #x
-
-/*! \brief Absolute stringize.
- *
- * Stringize a preprocessing token, this token being allowed to be \#defined.
- *
- * No restriction of use if the token is \#defined.
- *
- * For example, writing ASTRINGZ(PIN0) anywhere with PIN0 \#defined as A0 is
- * equivalent to writing "A0".
- */
-#define ASTRINGZ(x)                               STRINGZ(x)
-
-/**
- * \}
- */
-
-#endif  // _STRINGZ_H_
diff --git a/FanBoard/FanControlBoard/src/ASF/mega/utils/preprocessor/tpaste.h b/FanBoard/FanControlBoard/src/ASF/mega/utils/preprocessor/tpaste.h
deleted file mode 100644
index bb5fad5..0000000
--- a/FanBoard/FanControlBoard/src/ASF/mega/utils/preprocessor/tpaste.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * \file
- *
- * \brief Preprocessor token pasting utils.
- *
- * Copyright (c) 2013 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * 3. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * \asf_license_stop
- *
- */
-#ifndef _TPASTE_H_
-#define _TPASTE_H_
-
-/**
- * \defgroup group_mega_utils_tpaste Token Paste
- *
- * \ingroup group_mega_utils
- *
- * \{
- */
-
-/*! \name Token Paste
- *
- * Paste N preprocessing tokens together, these tokens being allowed to be \#defined.
- *
- * May be used only within macros with the tokens passed as arguments if the tokens are \#defined.
- *
- * For example, writing TPASTE2(U, WIDTH) within a macro \#defined by
- * UTYPE(WIDTH) and invoked as UTYPE(UL_WIDTH) with UL_WIDTH \#defined as 32 is
- * equivalent to writing U32.
- */
-//! @{
-#define TPASTE2( a, b)                            a##b
-#define TPASTE3( a, b, c)                         a##b##c
-#define TPASTE4( a, b, c, d)                      a##b##c##d
-#define TPASTE5( a, b, c, d, e)                   a##b##c##d##e
-#define TPASTE6( a, b, c, d, e, f)                a##b##c##d##e##f
-#define TPASTE7( a, b, c, d, e, f, g)             a##b##c##d##e##f##g
-#define TPASTE8( a, b, c, d, e, f, g, h)          a##b##c##d##e##f##g##h
-#define TPASTE9( a, b, c, d, e, f, g, h, i)       a##b##c##d##e##f##g##h##i
-#define TPASTE10(a, b, c, d, e, f, g, h, i, j)    a##b##c##d##e##f##g##h##i##j
-//! @}
-
-/*! \name Absolute Token Paste
- *
- * Paste N preprocessing tokens together, these tokens being allowed to be \#defined.
- *
- * No restriction of use if the tokens are \#defined.
- *
- * For example, writing ATPASTE2(U, UL_WIDTH) anywhere with UL_WIDTH \#defined
- * as 32 is equivalent to writing U32.
- */
-//! @{
-#define ATPASTE2( a, b)                           TPASTE2( a, b)
-#define ATPASTE3( a, b, c)                        TPASTE3( a, b, c)
-#define ATPASTE4( a, b, c, d)                     TPASTE4( a, b, c, d)
-#define ATPASTE5( a, b, c, d, e)                  TPASTE5( a, b, c, d, e)
-#define ATPASTE6( a, b, c, d, e, f)               TPASTE6( a, b, c, d, e, f)
-#define ATPASTE7( a, b, c, d, e, f, g)            TPASTE7( a, b, c, d, e, f, g)
-#define ATPASTE8( a, b, c, d, e, f, g, h)         TPASTE8( a, b, c, d, e, f, g, h)
-#define ATPASTE9( a, b, c, d, e, f, g, h, i)      TPASTE9( a, b, c, d, e, f, g, h, i)
-#define ATPASTE10(a, b, c, d, e, f, g, h, i, j)   TPASTE10(a, b, c, d, e, f, g, h, i, j)
-//! @}
-
-/**
- * \}
- */
-
-#endif  // _TPASTE_H_
diff --git a/FanBoard/FanControlBoard/src/ASF/mega/utils/progmem.h b/FanBoard/FanControlBoard/src/ASF/mega/utils/progmem.h
deleted file mode 100644
index 0bf65d0..0000000
--- a/FanBoard/FanControlBoard/src/ASF/mega/utils/progmem.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * \file
- *
- * \brief Program memory access
- *
- * Copyright (c) 2010-2012 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * 3. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * \asf_license_stop
- *
- */
-
-#ifndef UTILS_PROGMEM_H
-#define UTILS_PROGMEM_H
-
-/**
- * \defgroup group_mega_utils_progmem Program memory
- *
- * \ingroup group_mega_utils
- *
- * \{
- */
-
-/*! \name Program memory
- *
- * Macros for locating and accessing data in program memory.
- *
- * @{
- */
-#if defined(__GNUC__) || defined(__DOXYGEN__)
-# include <avr/pgmspace.h>
-# define PROGMEM_LOCATION(type, name, loc) \
-		type name __attribute__((section (#loc)))
-# define PROGMEM_DECLARE(type, name) const type name __attribute__((__progmem__))
-# define PROGMEM_STRING(x) PSTR(x)
-# define PROGMEM_STRING_T  PGM_P
-# define PROGMEM_T const
-# define PROGMEM_PTR_T const *
-# define PROGMEM_BYTE_ARRAY_T uint8_t*
-# define PROGMEM_WORD_ARRAY_T uint16_t*
-# define PROGMEM_READ_BYTE(x) pgm_read_byte(x)
-# define PROGMEM_READ_WORD(x) pgm_read_word(x)
-
-#elif defined(__ICCAVR__)
-# include <pgmspace.h>
-# ifndef __HAS_ELPM__
-#  define _MEMATTR_ASF  __flash
-# else /* __HAS_ELPM__ */
-#  define _MEMATTR_ASF  __hugeflash
-# endif /* __HAS_ELPM__ */
-# define PROGMEM_LOCATION(type, name, loc) const _MEMATTR_ASF type name @ loc
-# define PROGMEM_DECLARE(type, name) _MEMATTR_ASF type name
-# define PROGMEM_STRING(x) ((_MEMATTR_ASF const char *)(x))
-# define PROGMEM_STRING_T  char const _MEMATTR_ASF *
-# define PROGMEM_T const _MEMATTR_ASF
-# define PROGMEM_PTR_T const _MEMATTR_ASF *
-# define PROGMEM_BYTE_ARRAY_T uint8_t const _MEMATTR_ASF *
-# define PROGMEM_WORD_ARRAY_T uint16_t const _MEMATTR_ASF *
-# define PROGMEM_READ_BYTE(x) *(x)
-# define PROGMEM_READ_WORD(x) *(x)
-#endif
-//! @}
-
-/**
- * \}
- */
-
-#endif /* UTILS_PROGMEM_H */
diff --git a/FanBoard/FanControlBoard/src/ASF/mega/utils/status_codes.h b/FanBoard/FanControlBoard/src/ASF/mega/utils/status_codes.h
deleted file mode 100644
index 6b419d8..0000000
--- a/FanBoard/FanControlBoard/src/ASF/mega/utils/status_codes.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- * \file
- *
- * \brief Status code definitions.
- *
- * This file defines various status codes returned by functions,
- * indicating success or failure as well as what kind of failure.
- *
- * Copyright (c) 2009-2013 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * 3. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * \asf_license_stop
- *
- */
-#ifndef STATUS_CODES_H_INCLUDED
-#define STATUS_CODES_H_INCLUDED
-
-/* Note: this is a local workaround to avoid a pre-processor clash due to the
- * lwIP macro ERR_TIMEOUT. */
-#if defined(__LWIP_ERR_H__) && defined(ERR_TIMEOUT)
-#if (ERR_TIMEOUT != -3)
-
-/* Internal check to make sure that the later restore of lwIP's ERR_TIMEOUT
- * macro is set to the correct value. Note that it is highly improbable that
- * this value ever changes in lwIP. */
-#error ASF developers: check lwip err.h new value for ERR_TIMEOUT
-#endif
-#undef ERR_TIMEOUT
-#endif
-
-/**
- * Status code that may be returned by shell commands and protocol
- * implementations.
- *
- * \note Any change to these status codes and the corresponding
- * message strings is strictly forbidden. New codes can be added,
- * however, but make sure that any message string tables are updated
- * at the same time.
- */
-enum status_code {
-	STATUS_OK               =  0, //!< Success
-	ERR_IO_ERROR            =  -1, //!< I/O error
-	ERR_FLUSHED             =  -2, //!< Request flushed from queue
-	ERR_TIMEOUT             =  -3, //!< Operation timed out
-	ERR_BAD_DATA            =  -4, //!< Data integrity check failed
-	ERR_PROTOCOL            =  -5, //!< Protocol error
-	ERR_UNSUPPORTED_DEV     =  -6, //!< Unsupported device
-	ERR_NO_MEMORY           =  -7, //!< Insufficient memory
-	ERR_INVALID_ARG         =  -8, //!< Invalid argument
-	ERR_BAD_ADDRESS         =  -9, //!< Bad address
-	ERR_BUSY                =  -10, //!< Resource is busy
-	ERR_BAD_FORMAT          =  -11, //!< Data format not recognized
-	ERR_NO_TIMER            =  -12, //!< No timer available
-	ERR_TIMER_ALREADY_RUNNING   =  -13, //!< Timer already running
-	ERR_TIMER_NOT_RUNNING   =  -14, //!< Timer not running
-
-	/**
-	 * \brief Operation in progress
-	 *
-	 * This status code is for driver-internal use when an operation
-	 * is currently being performed.
-	 *
-	 * \note Drivers should never return this status code to any
-	 * callers. It is strictly for internal use.
-	 */
-	OPERATION_IN_PROGRESS	= -128,
-};
-
-typedef enum status_code status_code_t;
-
-#if defined(__LWIP_ERR_H__)
-#define ERR_TIMEOUT -3
-#endif
-
-#endif /* STATUS_CODES_H_INCLUDED */
diff --git a/FanBoard/FanControlBoard/src/TWI_Slave.c b/FanBoard/FanControlBoard/src/TWI_Slave.c
deleted file mode 100644
index bb9fc48..0000000
--- a/FanBoard/FanControlBoard/src/TWI_Slave.c
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
-* TWI_Slave.c
-*
-* Created: 04.02.2015 11:27:14
-*  Author: Stanislav Chystiakov
-*/
-/*****************************************************************************
-*
-* Atmel Corporation
-*
-* File : TWI_Slave.c
-* Compiler : IAR EWAAVR 2.28a/3.10c
-* Revision : $Revision: 2475 $
-* Date : $Date: 2007-09-20 12:00:43 +0200 (to, 20 sep 2007) $
-* Updated by : $Author: mlarsson $
-*
-* Support mail : avr@atmel.com
-*
-* Supported devices : All devices with a TWI module can be used.
-* The example is written for the ATmega16
-*
-* AppNote : AVR311 - TWI Slave Implementation
-*
-* Description : This is sample driver to AVRs TWI module.
-* It is interupt driveren. All functionality is controlled through
-* passing information to and from functions. Se main.c for samples
-* of how to use the driver.
-*
-****************************************************************************/
-
-#include "TWI_slave.h"
-#include "port_init.h"
-#include "timer.h"
-#include "ADC.h"
-#include <util/delay.h>
-static unsigned char TWI_rx_buf[TWI_BUFFER_SIZE]; // Transceiver buffer. Set the size in the header file
-static unsigned char TWI_tx_buf[TWI_BUFFER_SIZE]; 
-static unsigned char TWI_msgSize = 0; // Number of bytes to be transmitted.
-static unsigned char TWI_state = TWI_NO_STATE; // State byte. Default set to TWI_NO_STATE.
-// This is true when the TWI is in the middle of a transfer
-// and set to false when all bytes have been transmitted/received
-// Also used to determine how deep we can sleep.
-static unsigned char TWI_busy = 0;
-volatile union TWI_statusReg_t TWI_statusReg = {0}; // TWI_statusReg is defined in TWI_Slave.h
-	
-int adc_buffer;
-int adcDataBuf[3] = {0, 0, 0};
-	
-int dataToSend[3] = {1000, 1001, 1002}; // Test Only<!
-extern int countsToError;
-unsigned char messageBuf_rx[TWI_BUFFER_SIZE] = {0, 0, 0, 0};
-unsigned char messageBuf_tx[TWI_BUFFER_SIZE] = {0, 0, 0, 0};
-
-// When there has been an error, this function is run and takes care of it
-unsigned char TWI_Act_On_Failure_In_Last_Transmission ( unsigned char TWIerrorMsg );	
-	
-	
-	
-/****************************************************************************
-Call this function to set up the TWI slave to its initial standby state.
-Remember to enable interrupts from the main application after initializing the TWI.
-Pass both the slave address and the requrements for triggering on a general call in the
-same byte. Use e.g. this notation when calling this function:
-TWI_Slave_Initialise( (TWI_slaveAddress<<TWI_ADR_BITS) | (TRUE<<TWI_GEN_BIT) );
-The TWI module is configured to NACK on any requests. Use a TWI_Start_Transceiver function to
-start the TWI.
-****************************************************************************/
-void TWI_Slave_Initialise( unsigned char TWI_ownAddress )
-{
-	cli();
-	TWAR = TWI_ownAddress; // Set own TWI slave address. Accept TWI General Calls.
-	TWCR = (1<<TWEN)| // Enable TWI-interface and release TWI pins.
-	(0<<TWIE)|(0<<TWINT)| // Disable TWI Interupt.
-	(0<<TWEA)|(0<<TWSTA)|(0<<TWSTO)| // Do not ACK on any requests, yet.
-	(0<<TWWC); //
-	TWI_busy = 0;
-	sei();
-}
-/****************************************************************************
-Call this function to test if the TWI_ISR is busy transmitting.
-****************************************************************************/
-unsigned char TWI_Transceiver_Busy( void )
-{
-	return TWI_busy;
-}
-
-unsigned char TWI_Transceiver_Busy_Wait(void)
-{
-	unsigned int errcnt=TWI_ERR_TIMEOUT;
-	while (TWI_Transceiver_Busy()) // Wait until TWI has completed the transmission.
-	{ 
-		//_delay_us(1); 
-	    if (errcnt--==0) return TWI_BUS_ERROR; //timeout
-	}
-}
-
-/****************************************************************************
-Call this function to fetch the state information of the previous operation. The function will hold execution (loop)
-until the TWI_ISR has completed with the previous operation. If there was an error, then the function
-will return the TWI State code.
-****************************************************************************/
-unsigned char TWI_Get_State_Info( void )
-{
-	TWI_Transceiver_Busy_Wait(); // Wait until TWI has completed the transmission.
-	return ( TWI_state ); // Return error state.
-}
-/****************************************************************************
-Call this function to send a prepared message, or start the Transceiver for reception. Include
-a pointer to the data to be sent if a SLA+W is received. The data will be copied to the TWI buffer.
-Also include how many bytes that should be sent. Note that unlike the similar Master function, the
-Address byte is not included in the message buffers.
-The function will hold execution (loop) until the TWI_ISR has completed with the previous operation,
-then initialize the next operation and return.
-****************************************************************************/
-void TWI_Start_Transceiver_With_Data( unsigned char *msg, unsigned char msgSize )
-{
-	unsigned char temp;
-	TWI_Transceiver_Busy_Wait(); // Wait until TWI has completed the transmission.
-	TWI_msgSize = msgSize; // Number of data to transmit.
-	for ( temp = 0; temp < msgSize; temp++ ) // Copy data that may be transmitted if the TWI Master requests data.
-	{
-		TWI_tx_buf[ temp ] = msg[ temp ];
-	}
-	TWI_statusReg.all = 0;
-	TWI_state = TWI_NO_STATE ;
-	TWCR = (1<<TWEN)| // TWI Interface enabled.
-		(1<<TWIE)|(1<<TWINT)| // Enable TWI Interrupt and clear the flag.
-		(1<<TWEA)|(0<<TWSTA)|(0<<TWSTO)| // Prepare to ACK next time the Slave is addressed.
-		(0<<TWWC); //
-	TWI_busy = 1;
-}
-/****************************************************************************
-Call this function to start the Transceiver without specifying new transmission data. Useful for restarting
-a transmission, or just starting the transceiver for reception. The driver will reuse the data previously put
-in the transceiver buffers. The function will hold execution (loop) until the TWI_ISR has completed with the
-previous operation, then initialize the next operation and return.
-****************************************************************************/
-void TWI_Start_Transceiver( void )
-{
-	TWI_Transceiver_Busy_Wait(); // Wait until TWI has completed the transmission.
-	TWI_statusReg.all = 0;
-	TWI_state = TWI_NO_STATE ;
-	TWCR = (1<<TWEN)| // TWI Interface enabled.
-	(1<<TWIE)|(1<<TWINT)| // Enable TWI Interrupt and clear the flag.
-	(1<<TWEA)|(0<<TWSTA)|(0<<TWSTO)| // Prepare to ACK next time the Slave is addressed.
-	(0<<TWWC); //
-	TWI_busy = 0;
-}
-/****************************************************************************
-Call this function to read out the received data from the TWI transceiver buffer. I.e. first call
-TWI_Start_Transceiver to get the TWI Transceiver to fetch data. Then Run this function to collect the
-data when they have arrived. Include a pointer to where to place the data and the number of bytes
-to fetch in the function call. The function will hold execution (loop) until the TWI_ISR has completed
-with the previous operation, before reading out the data and returning.
-If there was an error in the previous transmission the function will return the TWI State code.
-****************************************************************************/
-unsigned char TWI_Get_Data_From_Transceiver( unsigned char *msg, unsigned char msgSize )
-{ // Data has been received from MASTER!!!
-	unsigned char i;
-	TWI_Transceiver_Busy_Wait(); // Wait until TWI has completed the transmission.
-	if( TWI_statusReg.lastTransOK ) // Last transmission completed successfully.
-	{
-		for ( i=0; i<msgSize; i++ ) // Copy data from Transceiver buffer.
-		{
-			msg[ i ] = TWI_rx_buf[ i ];
-		}
-		TWI_statusReg.RxDataInBuf = FALSE; // Slave Receive data has been read from buffer.
-	}
-	return( TWI_statusReg.lastTransOK );
-}
-// ********** Interrupt Handlers ********** //
-/****************************************************************************
-This function is the Interrupt Service Routine (ISR), and called when the TWI interrupt is triggered;
-that is whenever a TWI event has occurred. This function should not be called directly from the main
-application.
-****************************************************************************/
-ISR(TWI_vect)
-{
-	static unsigned char TWI_rx_bufPtr;
-	static unsigned char TWI_tx_bufPtr;
-	switch (TWSR & TWI_TWSR_UNUSED_MARK)
-	{
-		case TWI_STX_ADR_ACK: // Own SLA+R has been received; ACK has been returned
-			TWI_statusReg.transmitEnable = TRUE;
-			// case TWI_STX_ADR_ACK_M_ARB_LOST: // Arbitration lost in SLA+R/W as Master; own SLA+R has been received; ACK has been returned
-			TWI_tx_bufPtr = 0; // Set buffer pointer to first data location
-		case TWI_STX_DATA_ACK: // Data byte in TWDR has been transmitted; ACK has been received
-			TWDR = TWI_tx_buf[TWI_tx_bufPtr];
-			TWI_tx_bufPtr++;
-			TWCR = (1<<TWEN)| // TWI Interface enabled
-			(1<<TWIE)|(1<<TWINT)| // Enable TWI Interupt and clear the flag to send byte
-			(1<<TWEA)|(0<<TWSTA)|(0<<TWSTO)| //
-			(0<<TWWC); //
-			TWI_busy = 1;
-			break;
-		case TWI_STX_DATA_NACK: // Data byte in TWDR has been transmitted; NACK has been received.
-			// I.e. this could be the end of the transmission.
-			if (TWI_tx_bufPtr == TWI_msgSize) // Have we transceived all expected data?
-			{
-				TWI_statusReg.lastTransOK = TRUE; // Set status bits to completed successfully.
-			}
-			else // Master has sent a NACK before all data where sent.
-			{
-				TWI_state = TWSR; // Store TWI State as error message.
-			}
-			TWCR = (1<<TWEN)| // Enable TWI-interface and release TWI pins
-			(1<<TWIE)|(1<<TWINT)| // Keep interrupt enabled and clear the flag
-			(1<<TWEA)|(0<<TWSTA)|(0<<TWSTO)| // Answer on next address match
-			(0<<TWWC); //
-			TWI_busy = 0; // Transmit is finished, we are not busy anymore
-			break;
-		case TWI_SRX_GEN_ACK: // General call address has been received; ACK has been returned
-			// case TWI_SRX_GEN_ACK_M_ARB_LOST: // Arbitration lost in SLA+R/W as Master; General call address has been received; ACK has been returned
-			TWI_statusReg.genAddressCall = TRUE;
-		case TWI_SRX_ADR_ACK: // Own SLA+W has been received ACK has been returned
-			// case TWI_SRX_ADR_ACK_M_ARB_LOST: // Arbitration lost in SLA+R/W as Master; own SLA+W has been received; ACK has been returned
-			// Dont need to clear TWI_S_statusRegister.generalAddressCall due to that it is the default state.
-			TWI_statusReg.RxDataInBuf = TRUE;
-			TWI_rx_bufPtr = 0; // Set buffer pointer to first data location
-			// Reset the TWI Interrupt to wait for a new event.
-			TWCR = (1<<TWEN)| // TWI Interface enabled
-			(1<<TWIE)|(1<<TWINT)| // Enable TWI Interrupt and clear the flag to send byte
-			(1<<TWEA)|(0<<TWSTA)|(0<<TWSTO)| // Expect ACK on this transmission
-			(0<<TWWC);
-			TWI_busy = 1;
-			break;
-		case TWI_SRX_ADR_DATA_ACK: // Previously addressed with own SLA+W; data has been received; ACK has been returned
-		case TWI_SRX_GEN_DATA_ACK: // Previously addressed with general call; data has been received; ACK has been returned
-			TWI_rx_buf[TWI_rx_bufPtr++] = TWDR;
-			TWI_statusReg.lastTransOK = TRUE; // Set flag transmission successful.
-			// Reset the TWI Interrupt to wait for a new event.
-			TWCR = (1<<TWEN)| // TWI Interface enabled
-			(1<<TWIE)|(1<<TWINT)| // Enable TWI Interrupt and clear the flag to send byte
-			(1<<TWEA)|(0<<TWSTA)|(0<<TWSTO)| // Send ACK after next reception
-			(0<<TWWC); //
-			TWI_busy = 1;
-			break;
-		case TWI_SRX_STOP_RESTART: // A STOP condition or repeated START condition has been received while still addressed as Slave
-			// Enter not addressed mode and listen to address match
-			TWCR = (1<<TWEN)| // Enable TWI-interface and release TWI pins
-			(1<<TWIE)|(1<<TWINT)| // Enable interrupt and clear the flag
-			(1<<TWEA)|(0<<TWSTA)|(0<<TWSTO)| // Wait for new address match
-			(0<<TWWC); //
-			TWI_busy = 0; // We are waiting for a new address match, so we are not busy
-			break;
-		case TWI_SRX_ADR_DATA_NACK: // Previously addressed with own SLA+W; data has been received; NOT ACK has been returned
-		case TWI_SRX_GEN_DATA_NACK: // Previously addressed with general call; data has been received; NOT ACK has been returned
-		case TWI_STX_DATA_ACK_LAST_BYTE: // Last data byte in TWDR has been transmitted (TWEA = ?0?); ACK has been received
-		// case TWI_NO_STATE // No relevant state information available; TWINT = ?0?
-		case TWI_BUS_ERROR: // Bus error due to an illegal START or STOP condition
-			TWI_state = TWSR; //Store TWI State as errormessage, operation also clears noErrors bit
-			TWCR = (1<<TWSTO)|(1<<TWINT); //Recover from TWI_BUS_ERROR, this will release the SDA and SCL pins thus enabling other devices to use the bus
-			break;
-		default:
-			TWI_state = TWSR; // Store TWI State as errormessage, operation also clears the Success bit.
-			TWCR = (1<<TWEN)| // Enable TWI-interface and release TWI pins
-			(1<<TWIE)|(1<<TWINT)| // Keep interrupt enabled and clear the flag
-			(1<<TWEA)|(0<<TWSTA)|(0<<TWSTO)| // Acknowledge on any new requests.
-			(0<<TWWC); //
-			TWI_busy = 0; // Unknown status, so we wait for a new address match that might be something we can handle
-	}
-	
-	if (!TWI_Transceiver_Busy() )
-	{
-		// Check if the last operation was successful
-		if ( /*1*/ TWI_statusReg.lastTransOK/**/ )
-		{
-			// Check if the last operation was a reception
-			if ( TWI_statusReg.RxDataInBuf )
-			{
-				TWI_Get_Data_From_Transceiver(messageBuf_rx, 3);
-				switch (messageBuf_rx[0]) {
-					case CMD_TWI_CHECK_PRESENCE: // read version and revision
-					{
-						messageBuf_rx[0] = 0;
-						messageBuf_tx[0] = FREDFAN_VER;
-						messageBuf_tx[1] = FREDFAN_REV;
-						TWI_Start_Transceiver_With_Data( messageBuf_tx, 2 );
-						break;
-					}				
-					case CMD_TWI_READ_VAL: // read constant values from uC (only for test!!)
-					{
-						messageBuf_rx[0] = 0;
-						unsigned char i;
-						for (i = 0; i < 3; i++) {
-							messageBuf_tx[i] = (dataToSend[i]++ & 0xFF);
-						}
-						messageBuf_tx[3] =  ((dataToSend[0] >> 2) & 0xC0) | ((dataToSend[1] >> 4) & 0x30) | ((dataToSend[2] >> 6) & 0x0C);
-						TWI_Start_Transceiver_With_Data(messageBuf_tx, 4 );
-						break;
-					}
-					case CMD_TWI_READ_ADC_ALL: // calculate average for all channels (calculated by ATmega88PA)
-					{
-						unsigned char i;
-						for (i = 0; i < 3; i++) {
-						messageBuf_tx[i] = (adcDataBuf[i] & 0xFF);
-						}
-						messageBuf_tx[3] =  ((adcDataBuf[0] >> 2) & 0xC0) | ((adcDataBuf[1] >> 4) & 0x30) | ((adcDataBuf[2] >> 6) & 0x0C);
-						TWI_Start_Transceiver_With_Data(messageBuf_tx, 4 );
-						break;
-					}
-					case CMD_TWI_SET_AVERAGE:
-					{
-						setAverage(messageBuf_rx[1]);
-						break;
-					}
-					case CMD_TWI_SET_PORT_DIR:
-					{
-						setPortDirection(messageBuf_rx[1], messageBuf_rx[2]);
-						break;
-					}
-					case CMD_TWI_SET_PORT_LEV:
-					{
-						setPortLevel(messageBuf_rx[1], messageBuf_rx[2]);
-						break;
-					}
-					case CMD_TWI_READ_PORT_LEV:
-					{
-						messageBuf_tx[0] = readPortLevel(messageBuf_rx[1]);
-						TWI_Start_Transceiver_With_Data(messageBuf_tx, 1 );
-						break;						
-					}
-					case CMD_RESET_ERR_TIME:
-					{
-						countsToError = COUNTS_TO_ERR;
-						break;
-					}
-					//default:				
-				}
-			}
-			else // Ends up here if the last operation was a transmission
-			{
-				//NOP(); // Put own code here.
-			}
-			// Check if the TWI Transceiver has already been started.
-			// If not then restart it to prepare it for new receptions.
-			//if ( ! TWI_Transceiver_Busy() )
-			//{
-			//	TWI_Start_Transceiver();
-			//}
-		}
-		else // Ends up here if the last operation completed unsuccessfully
-		{
-			TWI_Act_On_Failure_In_Last_Transmission( TWI_Get_State_Info() );
-		}
-	}
-}
-
-unsigned char TWI_Act_On_Failure_In_Last_Transmission ( unsigned char TWIerrorMsg )
-{
-	// A failure has occurred, use TWIerrorMsg to determine the nature of the failure
-	// and take appropriate actions.
-	// Se header file for a list of possible failures messages.
-	// This very simple example puts the error code on PORTB and restarts the transceiver with
-	// all the same data in the transmission buffers.
-	
-	TWI_Start_Transceiver();
-	return TWIerrorMsg;
-}
\ No newline at end of file
diff --git a/FanBoard/FanControlBoard/src/TWI_Slave.h b/FanBoard/FanControlBoard/src/TWI_Slave.h
deleted file mode 100644
index 9c5dc5f..0000000
--- a/FanBoard/FanControlBoard/src/TWI_Slave.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
-* TWI_Slave.h
-*
-* Created: 04.02.2015 11:30:13
-*  Author:
-*/
-
-
-/*****************************************************************************
-*
-* Atmel Corporation
-*
-* File : TWI_Slave.h
-* Compiler : IAR EWAAVR 2.28a/3.10c
-* Revision : $Revision: 2475 $
-* Date : $Date: 2007-09-20 12:00:43 +0200 (to, 20 sep 2007) $
-* Updated by : $Author: mlarsson $
-*
-* Support mail : avr@atmel.com
-*
-* Supported devices : All devices with a TWI module can be used.
-* The example is written for the ATmega16
-*
-* AppNote : AVR311 - TWI Slave Implementation
-*
-* Description : Header file for TWI_slave.c
-* Include this file in the application.
-*
-****************************************************************************/
-/*! \page MISRA
-*
-* General disabling of MISRA rules:
-* * (MISRA C rule 1) compiler is configured to allow extensions
-* * (MISRA C rule 111) bit fields shall only be defined to be of type unsigned int or signed int
-* * (MISRA C rule 37) bitwise operations shall not be performed on signed integer types
-* As it does not work well with 8bit architecture and/or IAR
-* Other disabled MISRA rules
-* * (MISRA C rule 109) use of union - overlapping storage shall not be used
-* * (MISRA C rule 61) every non-empty case clause in a switch statement shall be terminated with a break statement
-*/
-
-#include <avr/interrupt.h>
-#include <avr/io.h>
-
-
-/****************************************************************************
-TWI Status/Control register definitions
-****************************************************************************/
-#define TWI_SLV_ADDR				0x0C	// TWI slave address
-#define TWI_BUFFER_SIZE				4		// Reserves memory for the drivers transceiver buffer.
-											// Set this to the largest message size that will be sent including address byte.
-#define TWI_ERR_TIMEOUT				1000	// µs until Timeout is reported
-#define COUNTS_TO_ERR				8		// (2sec * Fcpu)/(UPDATE_TIME * prescaler) [UPDATE_TIME from timer.h]
-
-/***************************************************************************
-Sample TWI transmission commands
-***************************************************************************/
-#define FREDFAN_VER					0x01	// FRED Fan board version
-#define FREDFAN_REV					0x00	// FRED Fan board revision
-
-#define TWI_CMD_MASTER_WRITE		0x10
-#define TWI_TWSR_UNUSED_MARK        0xF8
-//#define CMD_TWI_READ_ADC		 	0x20	// read only 1 ADC channel
-//#define CMD_TWI_READ_ADC_AVRG		0x21	// read average only for 1 ADC channel (calculated by ATmega88PA)
-#define CMD_TWI_READ_ADC_ALL		0x22	// read average for all channels (calculated by ATmega88PA)
-#define CMD_TWI_READ_VAL			0x23	// read value from ATmega88PA (Test ONLY!!!)
-#define CMD_TWI_CHECK_PRESENCE		0x24	// read FRED Fan board version and revision
-#define CMD_TWI_SET_AVERAGE			0x25	// set number of ADC samples
-#define CMD_TWI_SET_PORT_DIR		0x26	// set port direction /setPortDirection()
-#define CMD_TWI_SET_PORT_LEV		0x27	// set port level /setPortLevel()
-#define CMD_TWI_READ_PORT_LEV		0x28	// read port level /readPortLevel()
-
-
-#define CMD_RESET_ERR_TIME			0x30	// reset error time
-
-/****************************************************************************
-Global definitions
-****************************************************************************/
-union TWI_statusReg_t // Status byte holding flags.
-{
-	unsigned char all;
-	struct
-	{
-		unsigned char lastTransOK:1;
-		unsigned char RxDataInBuf:1;
-		unsigned char genAddressCall:1; // TRUE = General call, FALSE = TWI Address;
-		unsigned char transmitEnable:1;
-		unsigned char unusedBits:5;
-	};
-};
-extern volatile union TWI_statusReg_t TWI_statusReg;
-
-/****************************************************************************
-Function definitions
-****************************************************************************/
-void TWI_Slave_Initialise( unsigned char );
-unsigned char TWI_Transceiver_Busy( void );
-unsigned char TWI_Get_State_Info( void );
-void TWI_Start_Transceiver_With_Data( unsigned char * , unsigned char );
-void TWI_Start_Transceiver( void );
-unsigned char TWI_Get_Data_From_Transceiver( unsigned char *, unsigned char );
-unsigned char TWI_Transceiver_Busy_Wait(void);
-/****************************************************************************
-Bit and byte definitions
-****************************************************************************/
-#define TWI_READ_BIT 0 // Bit position for R/W bit in "address byte".
-#define TWI_ADR_BITS 1 // Bit position for LSB of the slave address bits in the init byte.
-#define TWI_GEN_BIT 0 // Bit position for LSB of the general call bit in the init byte.
-#define TRUE 1
-#define FALSE 0
-/****************************************************************************
-TWI State codes
-****************************************************************************/
-// General TWI Master staus codes
-#define TWI_START 0x08 // START has been transmitted
-#define TWI_REP_START 0x10 // Repeated START has been transmitted
-#define TWI_ARB_LOST 0x38 // Arbitration lost
-// TWI Master Transmitter status codes
-#define TWI_MTX_ADR_ACK 0x18 // SLA+W has been transmitted and ACK received
-#define TWI_MTX_ADR_NACK 0x20 // SLA+W has been transmitted and NACK received
-#define TWI_MTX_DATA_ACK 0x28 // Data byte has been transmitted and ACK received
-#define TWI_MTX_DATA_NACK 0x30 // Data byte has been transmitted and NACK received
-// TWI Master Receiver status codes
-#define TWI_MRX_ADR_ACK 0x40 // SLA+R has been transmitted and ACK received
-#define TWI_MRX_ADR_NACK 0x48 // SLA+R has been transmitted and NACK received
-#define TWI_MRX_DATA_ACK 0x50 // Data byte has been received and ACK transmitted
-#define TWI_MRX_DATA_NACK 0x58 // Data byte has been received and NACK transmitted
-// TWI Slave Transmitter status codes
-#define TWI_STX_ADR_ACK 0xA8 // Own SLA+R has been received; ACK has been returned
-#define TWI_STX_ADR_ACK_M_ARB_LOST 0xB0 // Arbitration lost in SLA+R/W as Master; own SLA+R has been received; ACK has been returned
-#define TWI_STX_DATA_ACK 0xB8 // Data byte in TWDR has been transmitted; ACK has been received
-#define TWI_STX_DATA_NACK 0xC0 // Data byte in TWDR has been transmitted; NOT ACK has been received
-#define TWI_STX_DATA_ACK_LAST_BYTE 0xC8 // Last data byte in TWDR has been transmitted (TWEA = “0”); ACK has been received
-// TWI Slave Receiver status codes
-#define TWI_SRX_ADR_ACK 0x60 // Own SLA+W has been received ACK has been returned
-#define TWI_SRX_ADR_ACK_M_ARB_LOST 0x68 // Arbitration lost in SLA+R/W as Master; own SLA+W has been received; ACK has been returned
-#define TWI_SRX_GEN_ACK 0x70 // General call address has been received; ACK has been returned
-#define TWI_SRX_GEN_ACK_M_ARB_LOST 0x78 // Arbitration lost in SLA+R/W as Master; General call address has been received; ACK has been returned
-#define TWI_SRX_ADR_DATA_ACK 0x80 // Previously addressed with own SLA+W; data has been received; ACK has been returned
-#define TWI_SRX_ADR_DATA_NACK 0x88 // Previously addressed with own SLA+W; data has been received; NOT ACK has been returned
-#define TWI_SRX_GEN_DATA_ACK 0x90 // Previously addressed with general call; data has been received; ACK has been returned
-#define TWI_SRX_GEN_DATA_NACK 0x98 // Previously addressed with general call; data has been received; NOT ACK has been returned
-#define TWI_SRX_STOP_RESTART 0xA0 // A STOP condition or repeated START condition has been received while still addressed as Slave
-// TWI Miscellaneous status codes
-#define TWI_NO_STATE 0xF8 // No relevant state information available; TWINT = “0”
-#define TWI_BUS_ERROR 0x00 // Bus error due to an illegal START or STOP condition
\ No newline at end of file
diff --git a/FanBoard/FanControlBoard/src/__Previews/TWI_Slave.hPreview b/FanBoard/FanControlBoard/src/__Previews/TWI_Slave.hPreview
deleted file mode 100644
index 3260f0d..0000000
--- a/FanBoard/FanControlBoard/src/__Previews/TWI_Slave.hPreview
+++ /dev/null
@@ -1,14 +0,0 @@
-[Preview]
-LargeImageOriginalSize=708000
-LargeImageWidth=354
-LargeImageHeight=500
-LargeImage=78DAECBDC16F1B57B2375A7FC1FB0FEEEE5B7CC0C5DB7C0F985582C08B200F41C06B6130F7828E6078A00482301F670222D65C8FA230BE732D1B91C3B160985FA8212CE9D116215304E446D4039861280122159026442E2810D44202086E0419DA78B4F046EF5435AB75BAD92D51B264CB722D7ED051F3F4A93A75BAAB4F9F53FDABFDFD7DD817080402814020100804028140201008040281402010080402814020100804028140201008040281402010080402814020100804028140201008040281402010080402814020100804028140F05E239534D5DF1DB185402010BC251889A4D841201008DE127614D68C29B185402010C87C58201008647D586C21100804028140201008040281E0822269562012891092D1C81B9199C93720AAE4B55EB494DCA82DBF55C99F6B5B6DEFEC435EE9D94C46DF8AFC7C3C0305257F7FAF75EC73371B3BA47BDB947D0781A017545A7B108F47C947C5D5BD63566A9089476C9F893EACA17C0296F3993844D4FDB996CF40249A849D86D397E16F586F7FA701F96C0EF20D6BCD19EBE2F1863ACFED23F1F85EAB62D74319781EFB4BFD3896A34913A2CA87C7E371FADD547E8AF543B9C95486EA58E7EE5079702402AB897857DFF91CFDD84B85E237E3542E9B0DD85D313CED5688A6C8D7BC52BAB3DF79A9ECC1E54DA5AF7E9CFD2AFD5669D1DFAAEB59C4C7EB71EBF8EEDE3E946E861DBE0DDB2AA83E79F9B95246C95FAB51BB786E5E8D29FA716E17FD6A5B8D37C95676DA56E39147DBA2CC4C52FD1EA5B65106B6951D56F58D84D33F77EAEFAAE798DE2ECAE57E735F9787FA1DE7B08EAF3AE32D10082C7C9F5805A3B907D3912188DEBC05AB2FF6C188FCA7E5F322E8839AF0C7AF6FD1BC287C2F0BE13FFF05F65B39180925E837BDADA6C26AC2809AF2013F7C7E056E4CA50E8DC960FF89717328B7964A80A1FC7F6C6A8E8EDFBEDEEF388E3AA4EEC721AB7C09FA55AC732F1C267F3BF8ED0484C3C3F02497878140807E336A4D682A3FC2F575D9D86E4BE95931BBFD2CFA2AF6CFD9D8A32E5F4D755656E9EFB31B37944FAB29DD6AD0CC65A16CAC91CFD936E28EE35BAAAFBBB91494732D6ABF341987858161D576D1D1AE7963947C6E5BD9A4BAB603A5E907D07E1473B4B530789B649857828EFD559441CF8F9919A8AA71C5FA75E52B77B306ACD7F668DC8A5183CE49DF56CFC4A6D5F7F5C59FE86FED490AAAC51DAA577F98263DABF79CCF8AAD17563FF87F6E17FBBD306CF5BB9E5AA5B132471F910ED55F2C9BB8FB2A10082CFCB6FF368C3ECAC350F077F0C56FFF1D0686C7A0957D4873D26B1F05C9D78E3F5273E3E101087F3108BFBD7A1DC66EDD80DBE141F5DB9EA71FCEB5F6E1C1DF1EC0F4BD3FD87EC2CB0F1BCACF8443E887BF271D42C100CD6F8B4DF4CF21989B18711C479D0C35D79B503E99FCF07018FE7AAD9F64188B8BE46F171FC6559B2310563E01FD6C387C0B82E1104C0C061DB2B15D7D2EEE467164EC607EDC29EB58CFE25C30447347737205F2A1A03D8FC577FAF5C93B8EE3E85BABB7AEC352C692678E4CD8F35BBDDD7FDC4D58735DE587D3E17BF4FBECD5302C8CDEB7DBC26703D6297E13EED2CB1CE883F29D30CD49CD50084C65079CD36FB4D07F26488F45658FD981B0FDFFD2D7C18E4E4948ABF178554B2919199231F5C1878EE75041D97E2110A4792FFECFED52BF557DEC37FA6F533D13A70203B0391976D84AEE3981E09871C5997CCFF16CB8BEC16B09085CDBC07507F4737EEB12A7059E57474FB89EE9BB465BA97996F577F452340ABB2F5ACAC774FB735C1BF03A7E18AA3EB1DCBDB48575FCDEF971BD615BB33FAE29F0FFE88BBDE6FC7EA8AB71A539BF3ADFDDAE4020100804028140201008040281E06202F72BDA664E6C211008046F11C5B915D9F3BC80D82AE6ED18572EF37144AF65FD7C2EFB1DD7651C479E7EFE71657BB5EB755C3FFF281987F5E924F6ECC56E6765CF5EEC7656F63CCA6E62CF83E388A5B169E184B960487F720D9642D7A0DE68DA651CE34535D6D3C1CF1DE5EDCCB46FB9DED8E96ACBEF38CBF092A7B7EB3EAEB7755CD9EEB6FC8EE33947F76FE750BB9DD49EBA6C3F1967654F6CCBEBB87E8E5F9F8EB2278F879F6C5DF7E3DAB3976BF2A4F664D9A7790FF46A4F3FD9ECD7EB8629FEEB0241FF6E412FD3FFB5B5E395DD6D1D21E344F2F4F38F295B3FE7B5651FD28F33B3E731CAA769CF5EEC76A86C7D3CDEB43D8F791DFAC93ECD7BA057BBF91E17080402814020100804820B028B0FC6E296613E16E48FD179626C2E98CEF7B9CC57437C3E1D9E17F7776CF89D15F2CDF03757DCAE174F0C1EAF9A15FA8B75EBA9E441BB9DEF84ED6F86351D593FD415396ADACDA6A31F32BE0281E05D40399123DF3A1B08D237B1CCF9A2F3C41472C81563F187195F7E453E2E3B1474F0BC38BE0746DE81E8B4B5EED5341CBC345B2F769C3C311D79CC83C33C337ABBD5874992CDDFECF2393A8F0D72D450DDF413E195110804EF14AA869333EDF94CC2DE8F659E18E47259F8FC539B7F06E7A7267285293FA8F3BCE858BC3B098B38EF55BFE9BC346E9E18E6984179B3972ED93C330BF732EADC38CD751FF75D75F04ADABC341A8F0D72D43C0BF7AB79F1A0F0CA08048277EEFB9C67E130A4C321A8CF3C84A78160575C22CE39DBA9B8E7F9D9A4A9E6BE63BEED7BFD863138CC137318C7CC66B1E87836D8C78FC94B23100804028140201008040281E07CA29997F77B81402078DB716BB29F251008046F17CC19223C3FC2F3233C3FEF8E3D65FE74B180E35A8DDDF2E522119E1FE1F9119E9FF3C3F3C36DD5251FD5C5F3C595168DB7F0FC08CF8FF0FC9C7F9E9F2E1D05028140201008040281402010080402814020100804028140201008040281402010080402814020100804028140201008040281402010080402814020100804028140201008040281E01CA2F56A1F22F9A84284D06AE78F3C27D9AC1CABFE69CA16080482D3445321F17C86CAD1AA0971E58B92E5285476F7C82FE1FFF9768BCAC942C4F67F5185CA76131A9B19881492B0B39DA7F3F1373CE6E533A38528644A567BD86EBC9EA1E378AE5E3FBFBD43C7F3F538D5DD7FD90073234BBFA1ACC36464D6331D9D6B90DD306DFF5A69266D9F8B3AA0AED86EB29C74B4B38332F271D2295ECF5B3A287D8CBAB32DF6DD2B5B2BCEE3A50CE9D6D8CCDA3AE9B641BB9DE6F8A10C6AF3558B6467368BD43F966D56A3542FB3D9A0F13B6EFB2F158ADF8CDBFFEB651D9B9516E42311CAD5831CE5582E28ECEFA9E3F10CFD8F3CE6F8B79ACAC0B62B97443DDF807A3C629FFBAA558172D284423C6EB5158DD25F849BFF1C7564D99B8D1DBBDE6EABA1748842BBD974E410625DF99CAA59B165B2AE9B99B8679FFC74679D0A4A67EAAB99847C3469E98BFA75CABB95BC5DC63ABA6C2CE3316CC3A1AF4F9FD05E7E3AE9BAEB3AE9FAEA7A70FD6AF4405F1CBFDD17783C0ACD649472597AD953703A98ABFD1552ED3D68353B3E47DDAFFFB1807E2604FF3E1DA03A89E7D3767DA3BCAAFE362DBFD54E42BC9882DCEE3E04A73E808167113096C2765D6CF7C556C23A6F1B65DD57BFDF54ED2521B1F5828EFF588C76FB97B2417FE76B29F8F21F4F20F9F3979A7CA7EFD4652082E9EB10EAF8BBC1EC0444B343547EB07ADFAE135D6F422C3BEC698FEB4B09089BC3905A2F42E4D9004C2D0F77B5857E0E6534EAD38EE3D1BC01D3F59FE0F3A771874E29D5D740FA0AEC6F1BA73A76680B7C96E60AD3F49C1936C3F47CC1DF6E164CF53C988448B50691C5208C2DF49D580EE730749775988141BA47976273B018FC08168623B0111DB1FD40E1E113BA7FB3C93578A5C6D57DFEE3812FE8F8D2A4A1CAC3EADC10B4D5BDFF6C200CEDB539585FB46C578C17957FAF39CE4D0F4660E9FA55DB5F66C3C3F40C28A572E4E3DCF2527FBC45BAAC275661796482FAB37A3F65EBBA313769F5E956CAEAD3F8035FDDEBAA5FCB5326F9B6BF7F7685CE9FFF38A074DF219B6CADAEC07A16FD59C8F697DC175D363E4FAAE3E3B0DEDC77C8F0EB53713E75A83D793C1EFCCFFF61EBF452C9B2F5D5F4A0FA4A97123D37ACB17D553348EFEDFC248DC35622E56B4FC1EB01E74957D29FD0FB38CED9702E85F776E3E5BE3DC7C3396960F6B235CF5473E078DE1A2B9A33AB392ECFB970FEC873337BFEA4DA59298F938F18CC2620F6F4324CD5D720B1749DFC30CE3F1F64471D3A55DA6BE487B1FD87CF1FAAB9685EE9B468FB7EB71FD66598D584ED9BA8EEFA22B5D750F3E3BB8514E9863EF47E710EBE2B9BD0DAEAF68BC9E709886FEDC0DCEA03D8FFE72AFC6D29DED556347B8BE4559A86E3F8D7CA0F67CA61F8CB52D2A993EA6BA5FD0B349AB9531DBF87C518F5BF568D93FD713C710E5FDC6CD0183DAACD918D63D9B12EBB1D079CC3D05D66E05C696B254FF3259E03F37C98E773A80F1D4FC6A19DEABE8FB77F45BFA2FCCBCD19AA5BFC3E497F378C5F605BF993E70FACB9F892F23BFB2DA71DCBC987CA575728BF573E3E69FB93F50CCE3FA35D73E8DA5C8A74C1791EF6C79E177674457F897DAAAA731D7D72E94EBE53CD21712E8BF3533E9FE7BA68132CB30CAE837FD9965C1FCBA5CEBCDFAD2FCA76F709E7EC7EF6D4C76373AD66CBC0B9B0ADAF91B1F54094B05DEDBD82E7BC789CC7D2CF9E82D7474DF345381F76BFF3B3BF46BFBCB75B819CF2635EF3A1A3DE9D23A524F97BF40BF17CDC5E97E0F99B3D57AD1EAC01E01A4153BDD7E35F947DD8BA04CA885793F49CC0F7737D5D02EBF3BA44AA6AB581BE939F29EE75097C1EA15FE36711AFD3705B680F9497A8A61CC7A3B84683BEBEB3868375D6947DB94FF1535E97E0351EF778F07394D7BB517FAF713D962FAEB45CE59D13B583EFC0EEF768F41BFCEECD401FC973417D6D028F77D9211275AC851CA54335913C35DD4FD48EF273A7E5CB5E47A7C3F4D82C16C53F0A040281407041E325747927D9BB12080482D3C40EADC7D6C41602DF7889B679B016AB9705BC261281F2EDF0D9B4DFC31ACBDB02EE3FCAF89F0E26D4BC12F7E0D6DA158A11082F466034FD01C4AA2B8EB835ACC36B9EC1C70310CD87ACB8B5E604F4A547A1A6E6A461F356D7DA2DFAF9F0E2381DFF97D8A7F0281BA0F60667FB60B0F0888E676B135D716B7D8F83B4DF3452CE41732B05E1F92FECB8B5E0E33E870C5C0B0DA6AFD07A6FC80C5119DB9DACCFC0ED74D09297FE1C069726296E6044D5D1F712119F9913B0A3E44C6E36E89CE0C20484541F07941E4165133DF6E13C61B43807E16711D8691B10C83E8250E109D97860C950BA7F447BA8B16A85625FC6174FE62B8A732BF69E8D5E76AF513E1B08D06FF55C937C93391C81DD660E1606C72876A23831473103B1CFBE80EDCC58571BD9BECF693F9FEB3727C2D46E7A6098F6989E76D680B3437D0E19AFB4BD4FAA7F2568C75FA54792A417C5037C13A37316FEF81594C3836086AEC3D3EBB71CE73EFEE4138A3198BD1C80ED66031E0743D4A7D9FE51581A9F82E5D82498FFF19943767E7800E63FFCB84BF72CF5D75ABBE772DB9882F4E084D22F64C58868F2DCEBB418A380E7E2FE1DEA51BF3760F56374D28A319B18857C280826C651A8734BA91AD9B71A1B71B4B3101E87458CC59BBC0BE9D147B0F96814CC8759D5E618E9BEF4757F970C5CAF677D704F8FCB787C3363ED09D6575AB0BB62881F3DA57889CBB31F40AE99273F8C7E0CE3D6F8DE8D65C35DF112E1C70314BB807B3FA185007CFBB49FDEF5C38B23E413F4180477DCDA0FFF08C1D431E2D6D2B5147C3E3F064F8A7FB3F785BCF6FD316621ABF4C1B8013D8EECA76A0EA6EA39DA0B2479DB06C5D835D70F64A6EA4DF57B1166CA29FB1CA33C473117ABE5F37D9DE9716BA3D5BCF2C3CA2F94C2F6F3A9589FB4F73EA79742279653CE3460B792E92AEBFB6CB31F07950F1C82AD5FE660311CB2FCB0BA4F39866073ED173A3E3B1086DD9CF3B956CA37687FFF71DF55DAC7C7FAEB9377E8B78D56C79F28FFB5FBA2A6FCF020EDDFE9321C7A0406ED988382F221A857F1DB21589ECC939F3286C230F9E10730F3690096C2C1AEB890FAF418946766E85D60A3665D73E9B10CCCF60520DD1F507EEE9E4336FAC1A9C080F27361BBAFA87B7D4D9587C3E4ABB98CBEB35ADBA367039EA7CBF37A1779D5CADA7AB0CDB2B14724A3F84D9862CD38C6C19C5C21BFACC740901F9DB2DA2EAFBE808DBCA164DD878DE403B2AB3E0E65634D3D9BC2B6CFDD883EB09F075CA658BB5B07B119CBF7BE173F7A4A987F7EC33117353CD64C470A73278A97E0F930FAE7FF6BE212184B83E42F07273FA4F930C6E056AA31C739FDE66D9A0F07168695FF1FA27889E0E351253B7BE87C7850CD5B8DEAA43D1FDE51CF8AC0C23D78687E66C5FF164C6B3E8CF3C2CE7C189F1F7DB3FDF4AD45C09C844C7594CED953FE7A44F92E9C0FBBE339CE136EE17C7811BF1571FAC5E97A839EA393CB23F41CC5B8E2D7F1C3749FC6E65CE593C54BD4D5BC73233AD673FD6CD23C96AC3AFA42E54FF458D8E3C4E7CD0682B09198802D555E1818847448CD6353C7DF47E067C5B691B2CB4B6A1E5E301BB0180CD0BC5997E7F92EF27DCCD66341D57BFABB8F7CE5B9FDAAFE9DC9B3B0F2D9AA8D92A9DE4F2E7D089B2BAB6A8E1C826C30486B1FA8C742DF658A794E7FF43BF2C58B7FFA83DD865ECEA76AF673A23416151F2A100804028140201008246EED0DC4ADE9F224D6ED7CC62C307F82E07C80BF15F4FAEEE64463CCDF680ACFCFB9E4F9E16FC7B01E72DDB0BFCC3473A433B6C1DFDAD1F152A4EBFB39F4E5D8764AABA3F302B9D7BCB9DD83EFFE2C4E1DB6017FEB7DD6E885E7C7CDF9731E797EECBDBC4C9C646E660C07B782CE9BE3E6F321CE1AF57779A8BF4BB6E3BAD2B8761CDC3E5ABB7E3A71FFB05D5C5BF593C1ED6E64AD6F81F19B62E2F6E9D8A09A8C3B787AF4B2AE3BCBF0E2E0718F4FF5DE8F0ED9284FD75DE7F3B1BE5B8C525BFC1D337D6BADF54F1F33B26DFCE0FB67E6DFC03A58A676E219C73ABC6E4F9457BAD91DA7837598D3A8D4E172623D9A860175C3B47F67DD51DFEC70C4F6C9DC3F7D2CF9BB4C2C739F985B89DBC3EB706B2E76AEFC30C5A1A53F8187EB2BC4F3833E0DF7E97E6F461DFC607E3C3FC8BF80B10D188330F038607F07ECE67EA07DB262169A5B09E5F31A8E788907C509DF78891FCA29F851957F98BFECCBF3C31C3C18EF813E9DF91EF0FBE2818531D2A9B83E69C74BA4B676889FC88EDDAB16A9CE18C6B3A9EB09FB8A75C2E9CFC8BFE17301F72775797ABBACEBF4F3841D6381E537122F519D87DA2BE49748D1B313F7E350577C468C9BC316A783563E890CF40FB8A7EF2E77CD7F0CABCFD594E54388E727390666F89E15B716354887F46D75DF369D7128B8574FFB5686BAAF8A3B50BC334E3119DC967925081BAD1D5B06D6B762D882769CAD39FA08AA0FE3B6EC76D2A9E7D60BDCC7B2F6FAABF72DCE90C2F731DADFE276DD3A11D78461D55DAFEDD9BC167AD9E187D3F3D6FC266742ED8925EBA5AAC736C0B6F87835FDC451D6ED86BA938C8ECD4B93715818C0F8B462579FB612892ED9BA3D2D3E9F9FAC3A39F5DC78B14A6DB26C8ED5E03EA16F477DD9B6D58716EF06FAB685C1DBA4634DE9B7119DA6760A9121874E859CF56C2A8C4F4175AD09A5E907D07E14F3DC4B451D716FB18CE77464977335D8F83547C7591E8E7FFD618CE4BDDCAB39ECB93C3147E38F7A6E34F7EC32F5E9A7C52E79C45172DF38571C1912B766AD53E4EA4F28568D9F39582734F32FBE76D3DB4D6AB16D6F3AD6ADD7B835BD7C1EE3D6ECEF2126EFC06C206CC7B0A14FC17330468B63D050C62BE5C7714E64A26FA2FBD28A1D439FE015CF467E419D8F31073887E21836AF76DDEFC27AFC1CEBED179B806DE1FD3E1F188482F205E6401FB5A9C7B39918D31CEE57BA0E3ACAEE583C8ED7632E34AF393BF9ADDB77BB64A34DF4D8BFE733097B9C164337299E78A1FF9A1D07E8EE13EA8BB6C5DF711C5836C7CCA17E8B7727A99DA5DF5FEE8ADBC07E14C261488747ADF8EBAB61F2E30E0EBFE90C949FE4E839C57179143FD2890F441FABC7E865639D39B04F7C20C604D29869E5F4F55BD6BB44EC962D8F63F8FEB97ABEBE0978D7797E785D82D74AF8DC9DFD1D3A8FE7E7CCDB83EB1DEEBEF1BB3DB78575745E20F77C98DBE5F51B6E93757F63EBA23DF0FCB8397FCE23CFCF9B02C670319FDA71CFC5775A3E4F2FFB720929BFE8F63DC795D78B8DD1B7EE562A87BECFF412C3E7D727E4B13BECBC5234E9687BB3D2DB3780B8CE80EB1A167F74DC77EDA5D7B5635E87E6B2DE2E3E7B591EBD47E41B27BE7E05028140209078098997100804C2F323109E9FB3E0DAA16FCA86D5BBF168FF7B3BDEEDB5F3E90B4E736C786DF9CCB89984E7E7D83C3FA85FDFE330CDA991DB27559DA0BE621DDC878B3C0B539BFAFA309EA3B79BDAA8C144E7DBE970C1847C7514223F87943DEE911E46F9DE5BE5F9413D71CCE2F9937DD7FC26787E0AA9A2CD8F83DFF122E70FAEDF715BB8EFC29C3D94734DD5C7E3C8E943B1551DAE9D7AEE574FFE1F9DE7A71C1B87745F3FC58B216710C634A5AF5CB1E3BAD29F5FEBDA4BD7F98390DF06F782F05B61AC87FB4A6E4E075E6FC576DD6BA73AB70FFE8E7B5DCD899BE41F160707688F4BB731EF43E15EE45631AF740F503C5CFA6A9F6D03CC5BA7F729FBA86297755E20E64D2A0C0F74FB608D47C2BC3D45F2B237C79C76EED88AE253541DB2E7F8B08383C9B2D515682A7BEABC47B46F3618A1FEE9D7C8F2B73F785E17D8CE94B295B5CF36723036AE71E9E266BADC77283753157354F97033A19D717FD1CDCD8472ACF8BCB3F3C5EF7A7E3A77DC9A1E2F71C51C239E8A9DADB86FBC44B2BD03C30BCA3F3FBDDC73BC84DEEE54798EE2DCF62826EE05E5B47B5033A9DF18D37B96EB18BDE4A7EB8A353C01CE3A3F1DC7CE625EB8B2F2B1DBAD16D4A7EE41C168525B7ABE3794819C8B7ACE368C112DA46A5088FDE890ADCBD073C1719EB5DABCA507FF45FFFE52F99BF2EDEE38E9E70FAD3AEE9C6D94C34EF91C2F1E48CCD7D465CB4C8374C47C7A7ACE3D8AB5DAEB9E8F622CD6E6A3717A37D9CE174977DC4FC3B6BDF2D6615F2C8E20ABACE7CCA3BC4AAEFC775E7E187D10C52627730E19BAADB00EFA66DCF35A4F3DA1B6ABF3734E7BBAF2FD718C1C8F2B8ED3CC6F3EF0BD2EF43C8285D4FF4763F372CDF0B5A76E73E49F2B2BFBAE1B7158F8F2BF6C79F8ACE6EB0563E5741DCDD077900E8628B6AF98A9905F2EDFBE6EEDBBAEBE38D3B8B5773D3F1DC7ADA1ACD572DC8E1F461D914B6D66F94F967FEDF8E107F586237E18F1A7E51968D653B61FC63A1C3F8CEF00EE78096E17FB55AC4E513F8CF213CA43C739EDB0DF6847777CC669A297FC74F46C5D9A792D3FFC26F2D3619DAD7C86F6B8B12DFCDE00EF413C47CFF7A6CBE03800BE97EC9C6D1EDF58E8B9E0F41C6FBA8FE55CC938EFD3631DB07F53C111E233238E492D671BE6B0E35CCBEE678B7935E01D9BF0609AFC2ECBC59C7BDBB51CD463DF756280B3DE711E2B06C55797D4DC96BE6DF1C95B477DED94F59C79EC6FBDEC4FF76BCC8AC5E51CD8284F97A1DB8AE31130A71EE6ACC2DCCE680BBD8E3BDFDFAC9AB3DB39ACB571F2BB2EF43C823C365EDFE7B13DF15D0A6563FF97C60EF269F175C4DFE3E9D78BAEE3D20F77C83EDB864131CD2FD7924A07C3C1FB27716BE72F6E0DFB46DF0876BE018C97E2569F3AFE3B4E79F0CE6E4DB597B835B6F7EBC6E95C84B8B5D789EBB2FDCE3178DCACF828EFEF7D694ED6F107EC5BF81BB0662A7AA6F1707EF6EF3D06EE8898341F1B1D1603E7755DF4924750B7273F3FF8FF93AE1DB37DF518B8CDBCE44615080402C1FB1DB72610080412B726789FE3D624A64C709121716BC78F5B3B4FE8256E2DB7BD47FD985A3ABFF9E92816CC23A64CCF4FE7175346F150AA4E8962B1BC63C4300F861E23B678D3E26B28DD75C6F2E9B158E6641EB626C3605EED73C4C9652752741C73BDB58B49BB8C7B3A8EDC715A8C97F81A81C4AD9D7EDCDA79412F716B3C5E3F164ECE3F74D6716B180BE6175386715647C59461CE37AF582C8E69C2DF1C3162F7FFE8D94F3D160B634B970647290E8AE3EA307EEB25C6488C8FDBF15F7AD91D23C67D1008246EEDF4E3D6CE0B7A895B431B606EBF1F8BF1D75A177813716B5E316556DE62FF98327A064C9AAACDA86F8C18C6E5EA316285FFFACAE2A86DEC78C74444AD7EFCFCE3133BDE8BE3B7B67776E877E6E7D5CBEE183196291048DCDAE9C7AD9D9BEF797B885BE3F51CAF717D17E2D67AE11DE36F1CFC629AF498519B974BF9F3C221FC5EF86C69264FCE8DD86B8C97402010080402C149E2D6CE9A0BED7575120804825EF126F2D371CE385C7FC83773769E216ED75DDF2F3F9DEE1B31BE837E5775DD3E92D741F037D4BFF50AD75A0ECEE7EFE0789D85F5C6731ABBADAE1C76DC26E7D6635BE8F9E9282F4735436DA15EC9F29BC959E9979F8ED791705CDC5CF50281E07CE1ACF3D3B1AFC75C419847ED87D415B8514E41733DE5BBE7A6C74BE8F9E9D08FA23F252E87C28FC4A733B53CDC150F6D1467A86E737F070CE5771FAAF38DF20F3055CE91BF9A292A7D9B07ED202744A5FD0B54B68AF43BE7A7D3F7F230D643CFADA7E7A7D36335A2EB4DC8AA636F6A3DD92F3F1DDAFCD77583F4CD5557697D75BE267B4602C1798D9738CBFC74BA1F465FFD60F9014C17FE00B9F2939EFCB03B3F5D381B3BD8DB53CF801F96EF79CAB2CA4DB896FE0B34EAD32487DBC4E788B1F58BDD0E72A405D2572896428F5BD363DBDCB9F5F4FC747A6EBC84F2C36173C81133F2A6E2D6F4FC7478ECF374D88A1FD9DAA1B13C69FCB04020387BCC3FBFE15813303CD658470A73278A97C058B1D06250CD9583F02FB18F21B31424DF7FCFBCD6E1C5EDEB5A97E8376FD3771C18F71B981DA27889E0E3518ABD0A293F8CBE7EF8E997341F1E379D3CAA19D566589D9B69E660A23C0123B31F92BCD1741F7D6F926D26A92DFC0DDB4964BF84C1A50CB585CF97C6CBA6F51DC762D8E14B47D573C9581A247F3B38F9A1D2ED1E3C343FB3BF21195CC4E74F12FAB38F887F78F47100DE44FEAB5BF81DC722AE3F386D38A9FA1C4A0721A4C6EC879FC7E83B8EE9A5905CEF0281402010080402814020109E1F81402010BC319E1F44A894A1F5E19D970D1899FF1246AA45686D247CD787A79A0D9B5FE7F26C3FC521041626C0E870F0B8B98170ED96F9833E98EDB3B97D62AA7E70EA532BCEAD3EE5E00FA23561751CBFAFE69C7223C5478E18389D6348E7129AF839E4E01BE2FEE19E1DAF3563BB6F93E747CF4997DB6EBD16CF8F402078B7797EF41886D57FEE43CCB801FFFD7C1C6A55C3375EE2C1EA7DBB3CFD3C017FCC3E8444F9278A8F603D746E20377F1073FB705C1EEE5561CC841E87813112CC05C439E5DC31706E8E213D3E4DD75D8FD1B0632FCE01CF0F8FD369F0FC0804827797E707EB34955F403F355C5E81B58D14CD21D98779F9E1BB8594CDAFF3E572026A4D03FE6D66D4F6C36E6E20F4C33A7F90CEED13CDDE22FF54516DE8FC41C67A91FE6FB46B8E9C720E0E1D17C790CE25C4BAEBFDC3F63816B9F186D67AFC787EF49C74A7C1F3231008DE5D9E1FFE968BC1DF7A713E77AF750C9D5F275988DAF28D0E2F909B1B08FD35F30721AF8FFE2D0973F854541F75FEA068216ACB66FE1FFDFB136E8B398670DDC6FEAE05BF5DEBF00DA18EDC26FA3FBF6F0ADF34CF8F3B27DD69F0FC0804028140201008040281402010080402814020100804028140201008040281402010080402814020783FA1E7A493DC710281E05D86F0AD090E03E6A36F9B39FB7FBD2C10084E6F5E79D6F9E9CC75036A6DEB3B649D2BC7E26258A3E700E6EDC0BC449817EED776D2CEAD36512D529B6366A82BDF9C2EC3D1EEFA22B58BDF1F4FA9F3A7CA536F2C4FD19B865F7E3AA3AEC6E7554D8D4DCA513E898C766B0FEAD3635DE52E7FDD5236DE69C0466B1FFEB99A02F3BB49FA7F7DD180ED4A0B96FFFB3EECB77250CA37A09D7CE079FE4B55DF0CDF8385E1086C1B71D8DAD987DD5C0AAAE9278EFA855C0B76B371D86CEC40DB50E3BB5783BA92F1F31FFF0AF94804B24341AA87BA6C1B09D8C672749AF42F44861C6D711D2C2F0CDEA6F3CD2B41FA267C79660A762BD6F7E0EBB53DD21FDB284DC661616058F5AF681FC73AD5FB168747E1FB18D49E74ECDD926797E070BC89FC74774A065C4F5BF7859ECB4DE73C633F8CFEDC5C8FDAB9D5B0DD5CFD89F2BB73C42BA6E79B73F823AD5DF4C936975A798678709AF58B9923D32F3F9DCEB1C63C45AFC3B756CE346C7FA497752C7C11543E33413E7521380A662842F50AF19CFA3F045B2F2C9F4A6DCCCCF89E8FBE157DE1FAE41DD8567E78F6D225E53B07BB7CE7C2E79F523DF4C3662804A6F2DDBB2B06E4E31930D1472ADF5C302B30FB71108ADF0EC1E2DD495854F5977E7FD9E9D33B75D257549DA13E6AB3F84D989E174BFD4178DC77155E36F2B0702FA3F4B3FCAC393241F5DCC79727F3EA7888CE374792F02CDC0FAF243FABA0079C657E3A5CF7409F8AE77EAE7CB19ECB8D398051DE60C184C86290F2C24D3673766E357C4EFCE6EF97614FF968CC3DA7E79B63197A8E38A33A49656CF7767D0E26CD00F52930DBE7E006BA28F0CB4FC77363CC49A7975F47563936E72A1F5C03BB7BFBF06C2060CD2507FF00E9E0E7B68F5C187D44BE69766808160241F2855B93E38EB6F5F3ABB78EE66EC6B96F3B7532FEB8A7FDA370D2DC819BC5E2B18E0B0402814020100804028140E2D6040281E03CA349B110D69E097298E35E5CB21CB5F9DB393F1D96393F1DC751507EBACD0C718C639C8217073AF3A923FF3BE7F8C075DA643563D7C7F80AE662679E782CEF7438D8D1CFA20CE46E477D5AAF90AB3EEBE807B68D3CEC3AEF7C63B7E59077519F4736377D29A36C57241B32973EE753E1B13C49DC5AF19B83B55CBDEC58AFCD37A01EB7DA2F244D6826A31457508EC769CD17518846E9EF66267EE8F9B8CFC6F5AA6605DA66D2FECDDEC78826A98E7D4E244A32798F0F81B11A5C8FF5AA4623508A671CEBC3D8C7CD8C61D7A1756D2573B3D2B2F7E2B88CE773B980EDEEB56CD9B8C65D50E576B3099B79991B08DEBFB8353D3E4D8F5B73E7947B1FE3D6BAC64CE2D61C6D558B3B50BC334EB11DEEB8B5D558C2EEB75FAC1ACBDECD1A76AC1AB629FE45709CB8B5B3CC4FA7FBE1E676C391E38DFD7043F3C30FEA0DDB0FB3EFFED3F20CC59DE1DCFD93D86734BFD5E3D670EE57AC4ED1DCDB283F39F0C3E8B75D39E52E1AFCF2D3E939E9F45C75279583F163D5D8ADAEB2A3CEAF293577AC289F5B830DE317AAB7919850E51AB41B4DA8D59AD04EA5C8E796EFFCE07B7E29F50BF9C2ED7C86DA28A979B47B0EDD5673CFD2DD0754EF554B9D93C91FCC4FD57CB714B1AE519C4F6FADE4ADF96D67AEFC7CFCA6736E1D89531D9CD7D68D8C3D1FC6F96D55C9C6392EB68B32787E8C32F02F9EAFCB5EC73AA8AFCC8705C7C459E6A7D373C6D9B9E13ABE5A5FC7E07509F4212C2BD2895BE3FAF83CC0E7021E4B6AB17538A7C7E707EAAECB69BCDC71C8BB8863E7979F0EC139E9DCB9EA4EEC8B2B2D57D919B7C6EB01FA5A04FA487ED7E775093EEE8E5BE3DFD0071E193F86F3CFCAC97C5D299A7C6D5B48AC9A402010080402814020109C52BC44BEE1C9E7725CE0B7A16620486B646257814020E81DB82EC7FB0DC5B915BBAC63299183FC70189E85C35078304D6B78E92B41A86773B0343E05CBB149D89A0CC3F4E56BF45BE96E88E285D257AE905F364727AD989F89D1AEBD9FC797FB486629D782F9A14F61499D837BD3E98161280D0F74AFEDA56AF48D6C353602B37D018A5B223E83C131DA632FDF0E43BAAF9F62875EAE25E1F1B5AFADF8A6A97B30DB3F6AEBBB341020FD702DB26034211F0A82191EA6FD7D3C07CB9BAA7FA84701F5C07E7C13A3B69A53E3B68CEC509F33FE6A6D876C551E1F76D4D765CFAAE7955DBEF41BDB9EBBAD06B59B1E7D04DB4AF7858151D223FDC9274AA7AB763FE4BA15082E1E96C6A6ED7D0BBDECF07F993C2C8643B0B5BA62C505A1CF52BEA9BC68C0BA11876D2305E6B713D6B1688EF6E66BF3560CCFDF3FBB42E7CC7F1CE86ABB9C7C68C5F9D4F6E0E9575FC0FCBFFE86EAAC37F73DF951CACA5F73BC90792B457E1475E2BDA08DB949E5AB73B40F84E7AF675BE4B771EF1D7DB8AE2FC653D9311D2313F61E3B9EC3658C7B7A55B3EA2DAB3A14CB743F65CBE03EDAFC33CD3DD87C340E5BEA3D637924A2D53F90AD97ABB1870E7B62BBD8F75DA57BE1E6183D6396AEFFA7A31F72CD0A0417133A6F8B9BC305F14CCDDF909F65FDD68D9E634E9F068287D6C1D8509C1BA64311F8F9BF86211B0C40763209F5B141588C678813C67D0EFA45E4E43A8D3E631C13CE7FCFFBBEF8EBF0D2080402814020100804028140201008040281402010080402814020100804028140201008040281402010E8E0DC11C7C9732479910402C1450172D3623E0CB185C00B6EFE273F2E28E47A177B1D4078AF04C7C1849A5762AE8DB57685F207851723309AFE0062D515477E3AACC3F9E9828F07209A0F59F9E99A13D0971E859A9A9386CD5B5DF9E910A15206061E0761E7650346E6BF84916A115A1B096A37F8B8AFABFEE0520622CF06A03F1D8270C1847C7514468A8F20D7CC43307D85726D4CFC1CF29481B93A90FF1CDB1DAD66E1513640720667FB54BB9376BB53D519083F8B40A51E0363ABA58E8721960DDB6D211FBDDB56DC2EEA3B5A9CA3F377DA86A39CDBDEA3B6B07C51AE119DFFC98F0B0AF941AC7C447D5DBC495C0779339E0D04E0713004ED62B28B2B89F99B98238A73C421D7929B1B9E38A2543BF57B161714F331E91C4AC83DC51C53AF9A3907EFD2D348D4D657E78E727CCFAEC9F6EB1382F9A6B0AC735A31EF15DACBC1113592243B10BF9526BB9E6B5A39998623B0FCED0F741C399EC44FBD1F98ABFD1552ED3DCA4F47397494BFFD8F055C2708C1BF4F07A88E5F7EBA9D7612E2C514E5A70B4E7D0003CA1F194B6147FB98CF68B56CC0EA3FF72166DC80FF7E3E0EB5AAD169AB3BF7426AEB050494BFB5F2D5BD20DF39B53C6CF9689F7C732CE340C72418DBD8B7FB4A9F9B4AFFA4A3DDFBAB567EB4D8EA7DCAAFA7F7AB7988AD585FFC8BF572856957D96A03CB17E91A398A0B0AF314913F9E9FB3FC91C69BA4CFADB7524FA0DEDC23EEA42EAEA4D6C15C5BE76042FFEDA513FA7EE682623E26379713734C6D44471C3C4DEBA91C95515F9D3BAA6B9EDF3A287BF5898E6B7C533AA795F9EDB756AEA4E88F0ED9682B333048CF205D36FAFAC5E047C41B38F39B0FC84F23C793F8A88B8FB3CE4F87759A6A8E8A3E72B8BC026B1B299A4FEAFEACCBD751DEBA5FD45C3B4765CC45FAB7256B7EEA956F4E9761E5A53BF0C3B1A79761AABE0689A5EB8E766F2EDDA575E9FBD93F3BFC7065B7466D619B38B7D6F5CA6F156D7DF5BC707A99F3C261F9225D2747E5A7C3B923723B61DE62FC5FCFE566D7C19C9ECA5F61CE38CC6964E772CBC4897F15E78838AFC47A7A7E66F6F13A90236AEBD72CE5BBDB2A1EE48B63B9988389F22C7772D2A13F44BD39EF5241D5DF7DD1A2FC73D947155BB65B4E3E7EF0AEE6D5277A1EA83638AF34CBAB2693508A4729E71D3E6B74D99C330FF3DEB965A33C3DCF9E3B979EE0E2E22CF3D3E979EC29DF5CC9CA3987BE9BF3B9BBE571DE3AF4F79CB70E9F07FC6CF0F2F5DC3EAE27E0FA019693CD2C3D5F383F5BB49AB4DB6DBDDA39C837AFEA679B49CAA367D44DBB2DB71F46BD59573D2F9C3B471CB67711F9D10ECB4F772A6BD18D8AC367F3FB3F729ABA65BDDCB7F27B722E7B3AE784BC78160777C5BF4E0F9C7C27C551B2AD5C7AE2A3040281402010080402814020716B87C5ADBD4FE03560CCC1F536E4E3BA31C654BC5C33E41A1508DE13F412B746390C3B71597AFC15C68B716C16EE5739D63EB5982D73320F9B6B3530AFF639E2D6385ECC2B2F5F7A3042B9BAB05DCE9FE85ECB6519ED5A05D27D015B865FCE4487EC54D1EAD34498F621393EAD8A39AA860760FEC38FADFD01ADAF7A3E44AF7ED7553BE5F02098A1EBF0F4FA2D871E7A6C5C61EA27BBDFAC07E630C4FE2D846FC3C2C0306CC4471CB21DF1CB46D3D6C31107A89E21B1FFFB2358087EEE6B03B61BDA16E3FB30FEEF717812DA2B493B0F24EAE117EF87F12D3F0F0D59B6F18841C4F842BDACC758E371EC378FAB9F8EBA9DF53AB8EFA9C742EAD7883B1E1165E35EAD1E3F89D711DA1FAF715D77EC13EF410B04E7356ECD8AFF8DD03DA9C75F61BC985F5C987E1CE7DD987B8FF315BA73077AE5E52BCFCC1CEC1BE62729AE622B91F2958171722CC39933D1B56FDD89A3C3F80FCE79A8C7A7E17D8FF11E05E587B06DBDAF7A1E41BF7E17C67F80E51FEE416D2ED595BB518F8DE37EB31E9CC3B0386EE953B8FB3787ECEEF138C867E88803CCD6C87F1D9A3732D7B2C765697014AAB516C508721E48CA43E9D33FF459E9D077D036A63C631039D6D03707E5B03526EB89A4AF8EBA9DF53A2F551D3D1652BF46DCF1889C77528F9FC4DC92D6B558745C0B56CCA5BC0B0ACE77DC1AE2552B4BF951691EA4C55F716C967B1EED8ED92AA9F90CCFD9F418328C1773C794619CC1AC9AC7701C19D661795E32B04EB5B8E390C17164EE7E3C7F9872AC01E0BD8EF2F4F834F6471873A7F795E3D3505FAF7EF3EF1857C7317ABA1E7A6C9CDE6F94C1FE99FD324193EDF55CF48A03C47348F7436C80BAB31E3FFFF8C49661C7012A3DFCE2FD288651BD7F944846B32B0611630DDD65C75CFCEE03EBDB1BE51BFD74D4EDACD7A1E35A2CA47E8DB8D776F8981E3F5957D72FD6DF5E311CD702C55CE6853F4170FEE3D6F03DAEA4AE67B74FF08BCDD28F63D9F1EED8430ED7F65AE5587161E843DD6B235D6D2A1FE7F5ADC699C4C3BDE135EDE3C4DFEDEE1DFC6D2613AFD53F770C22CFD1F5B2A3DDCAE9F9BBC3AE91A3E21C4FF35A1008040281E02CF8D67A81CEC986DC18626B81FE4E2BFB2E82F382267147CCD8DFB1E17761C972D4FE468D797ED897B16FC36FD188E7673343DF8F21DF037F07E7FE3E2E52CAD8DFA7E59B39FA660FBFCB3BEA7B3A94C73E1ABFA7C3EFE2F09B37FC26CF2A4748AEFE3D5DAAF3CD1CCA72FB73D6DDFD2D1F7F2B887DADECB63CBFD9636E3A94FF3EF16CE2FE44F19BF183D809ADECD87B52EF98F8CE5F567F71EF99D640F9FBDC68D25ABFEBAC6BBA8FF33ADD66C6B0DBE2F53EDA3F5765F7BB2A9EDB340CA81B26D5E376C9BF6AC7712DC25ACFDC77C8C377EAD2CDEEB833AE83F2B00E7F97CC7AF87DFB8CC7D1BFA30E189381DFF8E97B5A6E5BE1EF255CA7D57462196C9F7ABEE1D82FF4B29BFE3DA1D7FA30EFFBDB323A6BA9567B511A2B5A63EDC8E6B6D06E58F6938DE597478C59D79A6CE75CB615EB514F251DB2F5B2DEAE2DBBF32CBD48CF51E24F4B7F020FD75788E707BF1D469E9FDF9BD1037F7408CF0F723F203F03F2FC0C3C0ED8DF207B71F0D4944FFD2175056E9453D05C4FF9F24B24D69BD4EE48750DA6CA39F2873345C3DA435E57EDB4ADEBF357556E75CAC83B81DC12C8E1C95C40EE76F97BECE9428EF467D9F85C30CBE3D0685B6B9ED4D656B1CB0F5B7C6B03CAF767DEAB6735DE8BF5E9B1AEB27BFF197FAB7E3F0AD5D42ADD2FB88FDF4E8E41F59735EBDE7AF037C7713C67DB38587B2CDE1957FE2F030B83B7AD78AC2B41D5660B4A93F1AEB8A55A2207E55C0D367ECDC16E2E61B7FB8F4B971CC7ABF72D9E8FDDACE190575DDB81D2F403683F8A39792B5EA8BA39EBDAAC26D475BE5783C2F7569DD598F73A69F5A1B5EF477BEE4F0EF6E9B91FD8577B2E8EB68A4E93AD0A91A12E1BACD7F6EC1884E59929B287DB9EFA39681B8C61DBDFF158EB54BA37735947FDB2B1D6E1990BDABA56D34FACB550ADAD6A7ADED2F1E66D876C2BFEE127EBBCE28EE798E13DA4F7C97EFEE45A6A1CE264ABAD9D1DB233C75CD4D207FB757A596F77A3E5DDEE45E1F9B93CFB01714AA2EF0A9921F2C3B16A85F8D6900BD2CDF3137E3C407E0CE7A1A185007CFBB49FE6ADE1C511E27F6C6D199E7E187DF583E507CA0FFE0172E527BE7E38AAFC3072AC4D28D96E2EB43B2503AEA78374ECF374D8E6FB41DF1BCD0ED93E398B3C3D5DFC4116BF25735AEAB2A79A0D5B6F6C0B39D9DCE78F2D219FDAE2C133E83D4239D3A0FBCD5D76F23D44A03812A2FB17633631AE7577C5B0638C9A39D3711C397A673F0E42FACA101426C789FBE671DF5558F8EA0BABAD6FC276DC9A7B1E9A1ECB503C6FBA3FA0EECDB8DDEEDF3FBBE638BE3C9927D96E79B39F5DA2F9DAEC55E79C18EB2C0482B4778E732E3314223D68EF3D8071BF61287E3BE48C65553AF3FC0F63D9CC813E28DF094336F6C89A5BAF38AFA5C5BB93B0A88E2FFDFEB243A7574D0316EE65947F8A4349CD8597FA83D4F6617643DB78CD3D692E8FF1C7CA6E6E19F41D88F2B726F26F86FBD5F360D0B6B3DD0F750EEAF8F3D0570ED9E84397BE0ED278CF06C29E6346B6D2E4E9CFEA85CF3FEDC46A34A17AEB3A2C652AB0311727DBD25C77A7E128B30DB15DEE87DBFE1705F3CF6F38787E0C8FB5D491C2DC89787E125B2F20B418246EE07F897D0C99A520F9FE7BE6355FFEE1FEEC23F2C3638B61E236460E9EE063E438CE90EF453DBE36831052FE38A4CA73C57BC44B8CC7EF6623541E5CECEE4306D722549BFF36DD0FF98DB42D9BFDFED0ECC7F46CC1F3F959A39F8FEF0A5F26AEBC977E98FC6F6CCE55DE71CC99D1DF15F05B8A777C7F79716CDA8A5DCAF7F6DEF37C26E188F7F28A89F5C2D3FED113EDE3F71CF3903B9BB923C53F9CE03CFC86A59DF2E621ACE37A897AC6617C825E9658058140201008040281E0E243F2D30984E7472078BB388FF9E97EBF98A03DC27B6658D535E9DCA0D2EBC55602525B3B30617EE6A83FB9D980DBE9A0D55EFA73D295F4D86DD9E56C6DC291EBEEA2C49EE9B9F102D947102A3CA19C7C9C276F6A294C7B9058C63DD8B3E2F9A17C7197FBACEF71732D981FFA1496AE5CB1638FD254DEF1E56A21EE1555A7691E70C920BF0EADA34EA4AC58191FCE17DE23441E9CE2C41CAD53C73EFB02B632AA9D8151E26DD956653D2F9CDE96AE875E16FF207893386FF9E9386618F7E9F85CDC23C33DC2A9F21CF9E23D573CC315730C020BC3B0B315B7756DAE47EDF28FC56857AEBB8B003D371EDA6D583DBB30769AC7E8C782010F56BF7B233C3FCCD18379E39E7EF505CCFFEB6FEC7A760E3A9D0F46E36AD1EB70CC28F2EBA08FAD3F7C72242F0DF3E014545DF4B3D9E41AEC222FCDCD316A03F7CEF4BC700FFEE7FFB0DBD2F570EB2410BCA9B8B5F3969F2E8A3E643707869A7BEBF93FD1CF14AB53B4966274E2DE1898176E66F94FF63363A7F38CE0F283EC6857AEBB8B003D371EDA1FC713E3F2384FDE8FC538DC2DA4684C92CD93731D1CC5F383F9E29013057F5B2FE6A19D4BC1F2640E5E16535DDC395E5C2D6E4E158E57C06F1930A61FBFA7A81B195F5E1A9D0787B86F9271E290B139605459CF0B87DF5A38B8615CDF17787DAF21109C25CE5B7E3AFE6E2DA17C3C7F5B87733CF423783EEA18C947BAEAEB39ECA85DAD8CE7EBB9EE2ECAD8B973E3B9BF3B41DBF2FB057E6B78563C3FBC36403ECC30E9FBAB52324971B8EC0B8FE26F39CD38255CE7D0E7B432BF150804028140201008040281402038DD384281402010BC5DDE25C1C5C1F42741A88F0569CF9BCBC4FB311657FF7FE42CEF347CCBFAF95CF63BCE323CE5E9EDBA8EEBE71F57B6BB2DBFE3D639BDF5CFCF6E27B5A72EBB1779A7694F3FD9FA3927B767F0507B1E751D1E6ACF1EAEC993DA93659FE63DD0AB3DFD64FB712D09DE6D549FE4602B336D712075CAB86F8D7C23C527694719F3E7F9961B3B5D6DF91D67195EF2F476BB8EEB6D1D53B6BB2D5FD9EA9CA3FBB773A8DD4E6C4F5DB68F8C33B3A76ACBEBB87E8E5F9F8EB2A73D1E3EB275DD8F6BCF5EAEC993DA93659FE63DD0AB3DFD64EBF362F15F02814020100804028140F0EEE3B0FCE102814070D6E0EF38899F05F36C9959CA3DC579A94A11E7F79DCD4A83BE31E5DC509C9B8BCBC4B5AF7D4345DF4965F2F6B7A27AFEAFB2E9CCE38DBF611DCE0B8632F05B54F48FC839A0E7D7E2DC5C2C9BF390616E1A3D8796FB1B2B3E87FBA77FD7BA3CD46FEB4179C656561DB9B274D95E79B3DCFC377A1E32CCEFC379BEF45C607A4EB2DD172DFAE696FB6AE7753393CE7E6BC7F57E93AD7CF28D090482F30DCCA5857F67FEF20012972EDB39A0F45C59F6DE007ECF8AF9025335E24EE1DC5CBBCA0F98E17BC49385F968AAEA77CC8FE5CED965E72AEB706671FC4D49D57FD9C858FB54C3B7E95CE4EFC7FD64CC6385B9B050176E17F36EE9F9C2380F19E712E31C5A6EF0399CF30BF35ED5538BD42773F411B54D7595ACAE9C5D9AECA3F266B9F390E939C670DF45CFC1A5DB196DC57DD5FBA1CB761CD7FA8DB6A263EE7C63728D0B04E71A3A3F4BF1BF06612BDF50FED2CAC98BFC54C88FE23EA730FE03C593E3DEED6C5F7F572E58FC961FF3C330C76041CD0771AE578D46BB7854983306FFD663162F18FA1A9C43E31C118F97D47976BEAA4EBB783EB6C7F3656E97D716BC7865709EAD9FA3D7E7F92DCFE5796ECB7379E2F0D264EB6B193A7F8C3E07E73ACFC76FDAEF0B34EF557A4C0547287F18F6098FB3BCF58E3C3C8EE7B39DDCB275FB39E6F5AA7FD8075D77B9CE0582F3FF7D0EF3B3D03C3599B4FD00AF337871A890BF5D31A0BDE6CDE185BEE665A3377E2FE68CE1769B29FF7CD8BDB44B73C1D7F43F5E39C28ED327077F4D34D9C55F63D93D6E73DBF8E524A35C606A2CDCB2F9B85CC302814020100804028140201008040281E0C4B112A6AC310A0402C1DB867037090402C1DBFF960363C7EA8D1D487F720D9642D7680F7F716C1AA6839F3BCADB9969DFB27E7EBDD1A4B2DF7196E1254F6FD77D5C6FEBB8B2DD6DF91DC7738EEE9F7F9FF01CBFE347D95397ED27E3ACEC896D791DD7CFF1EBD351F6E4F1F093ADEB7E5C7BF6724D9ED49E2CFB34EF815EEDE9279BDBAA4BAEA78BE78B3BB163C4E1A4C543B56B6BC72B6BE7EB7C505DC73DCA2792714CD9FA39AF2DFB907EBC56FF8E29EF4DD8B317BB1D2A5B1F8F376DCF635E877EB24FF31EE8D56E87DA53E216050281402010080402814020100804028140201008040281402010080402814020100804028140201008040281402010080402814020100804028140201008040281402010080402C121D851A8B46BE756BFD5AD8A8C934020B8D098685620307B199ADB1588E4A3107CDC07956612FAB38FA0D19C80BEF4284CD71BEAB790420492D594AA330051F5FFFEAB16449E0DC0A5C465286EE5216C0E43783102BF9FFD40956F517DE49677CB8C564D686C66E076390B4155DF2C0CD2F1707602D6EA5390249DFA20538A4076770F1AF569FABDF56ADFD6D1A827A9FD11D3D2A3A2EA99D528E4B77720AC7ECFA8674B733BAFEAC4616F577CB9402038DF98ABFDD52E1BE5A4E52BD79BB0D34E42BC98821F0A29F275E81FF75F36549D5555A7D939A709C9B201A9F61EB49A71F2835F9911084E7D0003CF22741EB78DBE127D75AB9DA7FFB3EA1CF4C32FB61260B477943C03A6CA73F4DBE0D3031F7E77E9A1C39FA38EB9DD7D3AF67D750DF677738EFE8C99D7A1F6EAE0FFE16C8C7CB48CB54020388FC86C36E04AFA13F28D915286E6A9783CA1E6AC914294FC17CF4313A5B8C30FA3CF6DBDDA8164216ACF73710E8B7E325ECFAB3973A44B1EFB6294D378B90FF1CE9C1965B30E49757EAA9AECCCA7F7A91ECE93B1ACEB88BFE7EBF12E1961F36FF41BAEB90C9BE3E2830502C1B9476DCBB0DFFB1B9BD943EBA2EF8DFBAC37F0EFEC274F13B8EED18B8E67255F20100804028140201008040281C4AD9D05302644D690050281C4AD1D2F6E0DF70C59BF9DED3CDC2E1A149F6194C66DD9B88718488F908E58476F37516F42BFD277622108430503228B611836C3B40F896D851706A97FA82BC6BDE9F170788EC4C3090482F73D6E8DE6F21DFDB09C7C9EA0BF18CFA6CBC67EA0BFE673B95DEC4313E7DB4AF788F2C3E8A7E3CD16ECB553765B6E703CDC6A3965C7C3E537F3720D090482F7326E0DDB61FDF0F7BED900D5C739AA2E3B5A50BAA8B630BE2DDF6ED9EDA25C7CAEA04C9487EDEA6D79AD53703C1CDA40E2E1040281C4ADBD591B493C9C4020100804028140201008040281402010080402814020100804028140201008040281402010080402814020105C1C14E756E06543F812040281E04D63AB98B7FDEFD2D8B4EF37CB02814020381BA43FB9064BA16BE47FB777F6A11ABB2576110804823788766B0FF6771AF6FFDB9596D845201008040281402010080402C1F95DCB58ABBDDBFAE35ACC29B483EBE90BC311A88EF69F99AE05B302662008FB7BAD372E5B20109C531FB6B70F1BD107E41F762B79C8264DE50B06A1A0FEA6AF5C81AD7C06D2BFFD0AF29108B46B6B30DB178057AD0A3CBEF6353CFEE41368379B307B39E05893DE6CECC0E2E0002C86438ED8B9CD4A8BCEAFC723F4FFD34894DACD0EF5417A60180AC303E49FCCD1493A5E9D1875E85A359AEA7808CAB7C3E47BF19C129EB3BF03BB2B8667FFB02D53F9B757CD1C3C9D48C17666DA3ECE32D22349783610205D77953DD29F5F73F4878EF5F5535F51D7FA4A0BF2C36178160E43F65105B626C3901E7D042FD7929EB2AB7333500E0F8219BA0E4FAFDF82E94B1F90ECD2DD10945235EA533536E2291B515FDB2179667818B237C7E8DCF4952014D01EA1201DC773FCEC66DE9EA2E3E5F1611A03B6F5C2E018F9FEE64418D69BFB6483C7C11064FFEB5BAA5F9FBA07F55C93CA6C437D2CB99DDD172D877DB8CE4B055D86AE135E3F2C0365A7FEEDB7B06D5A39AFF46B213D18A1EB08AF39EE07C604A5D575B4A9E60FE6D53EDF7675DB1652453ACE7A70BBD59939BB7F384E4BE353B01C9BA431657B2EDF19B5FB8763ACB7EB27DB9CCC531B8FC3EA1A08FDC196ADDB0DFB978F26E93E6B9B49876DA7D4BD4563A964F018B8C755EF873EF6FA7D565765BCF6B04F4B6A7CBDC66C5BF5491F27BD7F2CBBA8DA5D1818A56B2DAD74D3E3B0F4F173F78FF56BD72A9E6376D83532353861DBC0D127ED9AE471C5FB61BBD980E2B783303B74CB614FF7D8E0FFD8C7B3F4ABD39F04A13E16ECF6476371F5DB475DC7D10EE5DB77A9FCFCCF5F41391683F2CCDFACFF67ACDC6EEBD9168D0BCDE7E2396B5C46423487AB4F8FA9FA334E7F59DC51F76CB75F443F331B407F1456F61A52F69F50D7434DDDBB83B0D152BFE72C79D9D8234BC637CE7129293D16021FC166264EFFEBE72CDFFBDED31ED8168E57F6D6382CF52B9F35B942F6D165E03368F6E3A01ACB2198FDEC12F9E3D9AB61BAF76DFBA1AF0EF743213248FD3643216A17CBB3972E413AA4FCC3E2436A1341CFB48EEC0DC380C90F3F80994FD57D100C42ECC38FC9AF660706491FF4A5787DA5C3F73C65A3DD1643376151B5BB7EEB06E4E31930D5B56EE9655DAB789E9FDDB07F7965F37965FBFDBD9A6D377C5E62FDF5C93B54AEDEBA0E4B990A6C1B711A6FD4099F77749FAB7EB89F750BF732AA9D78977DF43ABA0CFD385F532803C7B5F86D3FCCFF2E0CDBF949BB5DECF7E3BEAB76FFB81F688382BA8FCC813E28DF09FBB6ABDB167F43BBA11E7ABBCD9C69F70FC709EFF5747F806CA0DB93FBF7AA96EA6AD74B36FE9FF8EC3A2CA8EB04EF0596EDBE6EF5FB4CC73FEE2648AF4218E71C2DCF71D5FBA1EBAADF674FFFF7105D7BDC27AF31C33EE9E3A4F70FC79FDB5DBC3B49D7E0D2EF2F77DD975EE347FE4F1F3F9F31F3BB46D04E6C83DDBD1DBB4FF8DCE231E371A5FB415DDBB5440E8A992CB43331DFB141FB14922B67EA87AB4F72B095E98E1BDE2C16A1F824ED194F8CF33BBCC7B2BFFB0DF995BFABF91AD69F55EFCFD56884EC84733FBCFE17461F517FD036DB3B3B54672331D1D5E6B3EF62D633EBCB4F7BD21BE7E11BD1B1A3EBC532077E473BA734F66EE69773DF936F02BDDABA17E07572163A72BB5E3E8AFAA0DE43D07F9CD4B67EED9ED698D1BD1E193ED2FEE8E79EE23A95EBBECC0E8FF6A4CB49FA71D4981DD5BFA7FDA3477E97E0357EBD8C99C32F9D20D60BDF4BF75BB99EC650D64304028140201008040281E0CD02DF95F39128ED6158EFCD91AEB88DAEF7CBCEDA9D7BDFE375816B7ABDC81708DE07E03E5DF5DE8F50EDC44B609C443319A5BFB4379D57F74B3465DD8B9D357BDC43C2DFF13EC2FD563CE6DEE3C77D60F73E06EE79D29E65E7782993B7FFC7BF7C5FB26CF7BDCFC7B7F319FB5EC63AEC2B5007D4716B2EE61993C67B68B8B68CFAF17E9A9F3CF65BD85FBDBE5FBB85A8E5E3B03D96C17D42FB92EE4D653BF485CA6E6EFB1CE53F715C68DD2CDFB0FBAADB8D7574CB463BE171DCDFC47D8CBCD2136567FF306ED7E7B1C173AA19C3D68FFBB73CD4EF3996B87FA0FB6B8E39E1EB44D789EBA01E38F6D961657323D1D50F2F19A807FE8EFBED38067A9F5806DA5E2F3BF64D94FDF118EFD3E8F6C4B6FCAE557B8FA9738D78C51B723DFD1AD1FBC4F748299E119F23F0E6057AA19048903FC67DD9B6BA86B6524FAC3DC6C59FACBD849555FA8B6BECB5F9145D63D5EF4761716C9AAEAFA5AF9DF728C684BC6C64E8BE7373BEADC60ED6ED6B4FAC357B8CB758AFEDD9EBEB0B83B7AD3DBE2BDDFB17D5F9B4632F61797245DDEF59EB793261F9DFA5FB46D773616B07EBA7A09C6B919CEA2F6B769C8F9FBC6A6295F6600BDFC7C84E787E97FDB476B76A392A63BC88BD57D0F95BBD6FED1F635BDCEF6AFA496F7BAF1D3D70DF62376BC0F2CC141447C6A09A5A25BD31E6A79D1C239B6C1BDAFE8A928D7631C3F7A80EEE9797949E187B8563B3F4C375CB5E3727A8DF3C06D827D6AF9E5AEDC4123E221DF498EDD2641C16709F7AA7A874A9D1EFCD5CD6D2B7D3575DA7B261D91CF5A83F4C5BD7D1BD48573FFC64B0DD5E2A1DF53EE9D7AABBEC1E27EC93DB9ED587963DF418158A27B861ED9515C6A7D43512B6FC7B72CC77FCF56B4AEFD3FCFFFA7FC8BE85C890F89CF790E7473F8E3E733AF8B9E73E67313647F7DACF573EA6F88EA51B9F597B9D0F53B65F455FB79D2FC28651A3368ADF27AD6BEBC1345DC7EE39423DF61D95F1BED4E775553517E3B94941CD0F308E118F611C733B953AF45D18EF4BF36AE060FFF5CFDFD2795BF107E45BCA51F4794D28A87BC2BD2F8B6D627B3CEFE7790CCE830E7BF7C6791B9F87319D1C33E7D5EE46360FA568D49E9BEBCF21968775D7F13D40D573B77518500F9C5BD5CD1CCD0F511ECD7BB5F77B3CB6B592A7F936FEEFB627BE47603BA578A2333F8B76CD0BB14DD255D38FE7826E7DF97D8662571E5528FED88E11EBF4D5AD13CA403D78BEC8B6F25BA7D065E0F3AD8431B4AA8EDE27FD5A7597F56BB2A4F589ED89D7DF6C5FBF2D433FA7369722BDD03EF63B974B3F7DFCF56BCABDF682E5E7E337C547BDA73C3F8EDF6A6BBEEFBDBB958A7D8DE235837127FA7B27BE736DAF18F63D89D7265F77EE7775FDBDAE99EA2D9E0CDBE57BEAD0F93BBE93779E25D857FD3A677FA2D7394DE07A807EEFBFCDB8AE5EAE83E3E8F9BAFAE235F4B25139DB984CE5EBDC73567BDE8CD7811A73BDDCFBF7A4159FF790D35D132F4593E2A30402814020100804028140201008046F2D6E545FFFA5EFFA3B7B50F83FC502F9C440B9D77171CD186370F29D3D298A1DEBAC07633BBCA7A183F6C3B4D828777C1AAD45A7328E354D5C0F4459B8E6A7C7D2619D66A561EF31E1715C372C6BEDE1317D5FE9D098392DD649D749EF935C470281E0B5B8161339DABB2B75F6AF384E67A35671C4721D1A03857BCE182F169DEEEC8F0D3963DB3AFBDF18B3C3F149D9A120C52EEC66E3244F8F8DD2E3D3663AF162E9DBCA076BFC401873B591780275C3EC8EA5C36FCFF17991AAA96307B174757C0684C2D40FF737F27E31737ABB7A0C1BC6F161DC5455F966B98E0402C1EBF0AD215F24C65FD2DCB866383890744E289D574BE720D3B9D374CE258A41FDFA4096CE35C51C481BCD1A2C7CFEA915F3A37CAD1FAF1ACA9E1D0877F9CEE2FC1C2C7F37D3C501C75C6328EF65274E0A39E0281E763A03E5273907DFC7615C6F7ABB6ECE3294B19997F9B0402078FDB8357EC7D6E374D037359327E39DB2627076AC79AE4F9C1CCBD5DFEB0F8B4FC3BAEEDF70CD80E34BDDB174F6F756A9941D4BC76B0E5CA7579B1D37D649201008040281402010080402814070BE39A4DA664E6C2110EC5B799EDA8F46C19C34A130F59323A799839B42CB2BE595838B72496939AACC6FFEDB5A979D1A77E4D072E74DB3F9205CB9DCCC6F62F6F97A1E325DA7F9FF8CC2CF43566C865E5FCF57957D94F7CC49C5E763DE2C779E353D2F98578E308AA1E8E4DDC27563771D3B2F9896876C77C5797E76628EF2966C566A8E7C637A5B7EB9CE30EF16E7EC72E4E6D272D5B965BBDBB5F3BA69B9CBF4F375D97A7EBAFAC3DB76BE3EBFFC747A5EB0DD56C3919FAE985CB3AF91E29C61C73E725E3F1A6F2D276017474A27EFE0D4E0887DDD6607FBEDDC88ED63F07208046F039843D17D6DBFECC4513CD6729A79ED4B612CC3AB9A151BC1B16CEE760A37C7E8EFD2F5FF84E5118BA76BF57ECAF2BDAACDF98F0374CC4B0671A28D8FD33D8F3C3CFAF9EE1C7736674B3201E9D077544FAF4FFDB895229F535E5D816C28ECC9658BE72F5FF937A5DFAFB018FC887CDB46D4F279C81D67C7B1CD7773C3A09EC51FBE83B631D5896D3B881B617DC91683A350AD75730B153315482BBFB6FF6215527FBC45E3B24E5C644DBB2D2F3BEB71801B73938EBEFE3C9385CD47E324F7A5B2855BB6A3DD4E5B7FFFEC8A3D361BCD967D7E3957B365E3FF181B586FEED135600606C9AF2EC5E6BAECA6EB97C5672D3DB773E423D18EE8A3F91AA1F895312B4F17724861FE321C3FE4676219EE672F5F1FFA758BFF2F4D1A9D6B58F65305E71B7E7C6B1857BBFCC57F3BBE6170FB6BE6DBE2B9ABCE9F65C73474BED140EE289D436C7FDF59F692C19C57CCB1A59FEFC77985733CCCF58A71147A7D37771BC6A0B5CDEEDCA4783EEA82E7BB39BD8EE2E8C27928C660E0F364B371C0174C31701D7DF1FF9F7F7CE2C91586BE10FDCDB661747177715B7E76667BA2DEEEBE32DF1071E469B2DDEDBA797F796CF8FCACF26B2C5BE70D437E3437479A57FFF0383F6BDD1C727C8DF0B85763B7ECEBC28B87CDF10CD2B8F7ECEB16F39B76B8FE3612C297231008040281402010080402811787C769E77113FB9C0FD86B336F5ADE09F2F7F19A20AEBBE3FACF9BD45B70F2D8A277253F1DE778E37D1DFE7690FE7A5CAFBA3C37C7909E4F0DF3686CAB7EB0DE5E3C3F47E5B0439BE9B9DFF8DB41CFDC715A6E355D0F5DB69EE3CDCE5FA2DAABA7928E6F0ADD36A7BDBDAC956BC2E66FD2E569763834975B273F9D3B979B9D97C2C3CEDC0FBE4EDCEDB27DF47C6FBA9DF55C1ED8BFAE3C721D7D79DD1E79DA91DBA9108F3B789A98874ADF23D1730DEAF6ECDA8F70E53EE076399F9E955FF520BFA09E87CE4F36F78FD7C575D98EF1D7AE4FAFFC7D7AFE3DB7DE7A3B74ED3DB4E254F0FEC63C846E5DF56B52FCE03988AF7847F2D3E9B1A8D9BFFCD93E569F9AB37CC7F7E39EFDC31C63B407654C3964E8F9D4FEF1430262FF7A89723FB9B98B88E7A7871C7698EB2C7BE3FFD8B9DFB65213748E9B37C99D2F4ED74397ADE778B373AB15553F7EFDE920679BABAF7A7E34B42DEE137AE672D3ECE097CB8DDAF3CAE5D6D1F7B05C6ED5D4A2A7AD38371EE6C3E37C6F5CC7715DA4535DB645D9BA0D91FF09AF1BE405D1C7C6CD43E51E27B73DDDB12A7A3E3CDD3E9C4F0FDBD0F30BEA79E836A2639EB26D9BEFEF77C9D6C75FE7D9F2CADF47FD6BED74F16FB9AF671A87FFF300B218A7A2FCEDD20F77E89A7C7AF9DF1D32F87AE1BE0ACE96E787EE93B1B8FAED23CFF970F9F65D2B66E0CF5F413916EBE2D4C178238C33A5F18DE76C4E1DCA43373DD6157386D798CE0DD40BD78E1FFF4F17779C9A47E8C7CB9906F9CFE57BDF7BDAE31F77AD5C6CE88717EEA9F961CEF245E6E40AC538E33C61F65A98FA6A06FA282E42E72E622E213F9DD00666C8E2479AF977D5A7CB978807A99D7C40E778F126357F9AA2B6D627EF38F4D07993ACD89010C9C3F2ECA54B900E45E859883A79CD63789CB0AD82BA2F99BF89E74A288FE313D9D63A6F92DEA767E17EE54F061DFDC37EB0BEEEE72BDA19E395315E1A9FE75EB65A9830C93ED98141659B09BB8EFBBAC0B295DBBAE190CD367CFABF8760F2C30F60E6D3002C85834EBE288D87CA6B9CBCECE9B84F3AB6E5B92A8F4736D679A7980CAB3A49DB3EE82B991FCB4F36F5FD5EC6D6C33196DAF8EB3C5B2C6FEA830F299F19F7CF8F7F4B6FA789CF82C12054575A14771DFBF063D2AB7C7BDC2183AF17AF186EC1EBA1FA24075B99E9AEB835E4C8293E497BC65E627C3D8DFDEF7E43D7C9DF2F7D40F56703417ACFC2EBF199BABFD66FDD8085D147347678BF6DEFEC509D8DC444579BCFBEB3BEB930BFFCB427BDB3CABFE27CE2703E1EF44D2360063B3C995FDFB1DE67EFDD86D298771EBCECF068971DDCBEA86B3DE308EEA2D3845B8FD3928D716B47D91A7DC8D340F058F1B87E7673DBF975C0DCA5AFC3BDF4B47FF454E28C4F321EBEB23DDA39EC3A7C9DEB4820100804028140201008DE25B4D76A17A72FEA5DDB2BB7FAFB0A5C67C27D99EA68BFD8C327C66BF6B2C55B51E8C4329CB60C3B9661CD786762F4700DF95DD1F742F8AD3DCC75F480AE418C71C2B5C3EAE820ED8721670CC6ADA57FFB95B5D7555BB3B9561E5FFB1A1E7FF209C5EFE075ACAF7DE175B73838407B02FA1E80CE5743EB689168277F529F836348E7A571EFD1A14EF8AD2FFA5BE683C17D213E4EBC0EDFC73CB98E701F83B96F7AE1DA417D89C7A69277D4D7B96FA84E47F7E2E44FD44EECB32F603B334636F2E253C2E3B4AE3D750FD2CA1E9BEA3998BEDA070B83630E6E1F96A7CBD0E3F3983707D7EEDD5C3BA82FD7C77DB0F4E7D7BAF4D0B987FCF87C90B347EF138F4D736E866CA3C778B1BEB836CD7AE863C96D21FF8F7BFD54E779E23E39AE296503D6D7CD5DE4D867D3B8A0166E219750D033BFA02E0F63BC70BF198F2F0E06ECEBD64F867EDDEADC55FAB8EA63563556559F0660233ED2CD75D591515432743B775F8757A09E493AC658EF877BBF47B721722A797D37CFFA529E056DFC16C2B7296684F53D6C2C515F778C1EF77BF745CBD157BECFEA46E6BDE4F9E1E3083F3F4C7B7C73F3EA9E0C53FE3A9DFB86791DF09A65AE958D680896320DE28059BA7ED53386C6338EACC357B3B5BA02EBA91C8D61757ECEE67671F3D2B8EFD772F2E1819CDA9E7D8E7E1C3987DCFBE058B73C1CB0E20A3AFC044771EDB87927B83EB6CFDC37C4ADD0D19DF86D1AF82C5BA3FF713FDA6BAF89F7A9F1B981FC38F817F5E7985AE6F6D1B98774FBE8ED206F0E8EE15622E5E0DAE13843E6467BA9EE35DC2FD7CFD7B9870AC6A2279F8FBB4F3C3658C7CDC9C1F6C1181CD6431FCB42EA276A8BF97F1CE3AAC5DCE87DF2D637E97B8DE85C503A4F859F3C8A9F7F300D65B341F3BF76E6361D5B8FFEE82B43BF6E75EE2A7D5C75DE2C7CC6510CFADDBF75715DB18C998F030E3B77C5C2746CEB1E632F7E2CF7754176E8DC735ED721F78D6514C7ADEB8FF53D6C2C515FAF3D43E60BD3FB7AD87DF6BEF0FC60ACEF74F073CF7DDC626CCEE28CB9F2318DCDD28DCF1C3E089F63181BB69D2FDA5C2BC5EFADBC4805750DB3DFD6DF85EBB1EFA8CCF18C1CB7A6F3D514F03B03F5CCC463FA3DE3E6A5D1D71CCCAB012D56C754E7587112FA71CC4DEABE96B1FDD2DD07F6F3A417AE1DD4772A38627F6FA1FFAE7F5FA5EB4EC79371FA9F9F5FEEE7221FC7F630C6AFA4E61734EFEDF49BEF63DDCFF9F9147CAFE6B87C37D70ED7E76F0670CEA3AFD9E8DC43877DC3A5F78975C47143DBE03B06CEA774FB50FF3A7AB8C712DB62FE1F473CA3C6F3A4F7C9F11D48475F1E3FAF6B44E782C2EB0CE7D09B2E9E4C5D5E3367DADFF91494CEA578C2718D78C9D0AF5B9DBB4A1F57376F969D6BBCD970705DE932743B77C59074DAD4C7D8CD37E5775D50DE738F3517FDFAD4C78FBFF7607D0F1B4BD4D76B5D83FBADF795EFB3F721DFA35F7E3AFAADB6E6FBCDE96EA572C095E5910B0EEFE16D8CE1EC5C4F78EFF2387ABDF7F13744CD54B427BD0FCB5BE798D777724EF35C069F0DEEE37A59D7C7AD27C72461FF5F362ABEDF1BB26FF48B6172EBEE9567CF37CE50DD1F7EEBD9FA5CBA57FBE8D7C151F5ABC7E02DF3EA93659BB8AD67AF315E9CDBD0B94771F49A7EF5043C6BCC2DE7D6BD1779A7B2365C3CDE37127ED78E9F6D4FB31F2789D1437DBDE6765EFD3EEC3E130804028140F086BF7561EE931370A8BC0DF8BD1F0B0402E1F979D33C3FF61A5B275E626B2EE6CBEBC5EB29D82FEC0FEAD3340CA81BAA7FB8A7FF87714F7E1DBDDC13BF8AC69BB3B9B2EACBC1C31C4568639DAF48E78C61195847E786E1F59FE5A17EBBCC7C37BA3D75BB11E74C2AE3F98E8BEB4EB436EDE24D72FB7D372F90CE0D83EBA33A078FCE95E43566AC13F68DBFE176F302153AEDFA711AD9BC349D354F6BFDD2DF86727F0B84E7E774797E6C7F369FB6CB4BF78D2EFF5FC53DD917ABA423CAAEDE8F134FCC72F02BCA03B4F16B8EBEFF44EE136AE3E64417DF8DCDB5D303BF8ACE9BC3BC403A4F8CAD577ABEB36F69924ECCE1A373C6E05820078C5B8F7A6AB513CFF708B65A35AAC3798F747BB2DD6688EF660CD2B7950FF6E0F9C07D551C1B5D0F472C81B1E6CB0BC47AB93978DC5C496E9D782C31CF12C625E8BC343A570EF2CF78721AB97877FC6C68731D293F2EF7B740787ECE86E747E7A529AFBE807FAE26BA642C866E12AF09F2612C4FE62926F6EF9F5DA3D8E5747F00D6A7E3C47D823196C839A3F3B9E83298C3E5307E15E670B1F983349E18C7BC10E76FAADFF3AAFFCB131336878FCE1983751602417BBF9475A23891F0304C0506283EA17AEB3A2C652A5DF674F3DDCC0E84BB3807F09CC77D57ADF9F564DED6A36BCEECC30BC4F671F3FFE85C49FAB353D709CF49FFBF1F4336A8749E98B3796974AE1C6ACB83D3C8CDBBA3EBAEDB90AFD5F7614F5E203C3F6F87E7C7C94BB3142F9E1A671FEF159F84FBE624FBE27EE0778CC3E2337A8E155073552F9B7A71ACF53A3607F6793BBC346413B9CF050281402010080402814020100804829EC1B15C7AEC19C608553386235796577C929E4F8DF940FCBE39E6DC5C9B959A672C17C72A514C5436E7C869E6251B794D382689BF77E59C5DDDFDEB7C8BDA89B3D263C7B8FF5E7179DB5A5C1E7E7FCFED94B5782B775C9E1E2FA6C791719C951E7FD715EFA574A0FD4D0FDE1581407071514EE4C8172C2A1F591E8FD93142C5893147AE2C3D76C82B9F9A3B9ECAC15111351CB9B9BC62B9301ECAE2A9B2F679F49C665EB1517A6C1BFEA6E7EC727EEFBAEA88BFE2FC660E6E8244EEC8B8BC67376E38E2F2382F843B2E4F8F17E37C63CC61E28EBF73E702737377090482F7236EAD6A34EDB8023D4668C370C608E9B1435EF9D49843CD6BBF9DB82EB5DC5C5EB15C36B729C683AAB6F49C66FAFEB91E9FC43149A89F9EB34B9F9FEAB9DC3896CB3D8745FF78545C1EE511D6E2F22826633AD31597A7C78BA16D388E0CE36DDDF177EE5C603A07CC9BCABD241008DE7EDC1ACE699F85ADEFC7F4EF044ECA2374585C979E9BEBA8582E3DA7993B6EED7562B6BCF29B51CEC423E2F230B67721FCB51D9747DF1D64F29E7179AF137F27100804028140201008040281402010080402814020B878F0CB4F27100804823703CC4F57CF67C416028140F09670587E3A8140201008040281402010080482B342337FB2F58876AD42DF31FBE5A1A46F91872362638140203802C87BE0172B817915BDD68DF19BE7FA438BF7667130407C0FDBAA8D85C131E2A8694E8461217CDBCA11B6BF03E6E864175F0DF32DE0DA743A1824DEB2B4AA5F1A1E80A5C413CA3F84DF0D2F4C9850BFDD0F05A3098550101E7FF20971A9554D89EF1008041707E54C03762B19E201D3397FDACA576E441F74FBE70E0710F22E2C5CBE445C3DEDE4039BA312739431BFCEE664D837771CF2E82C7F37034FBFFA6FE21BD3F96E90E707F96DD0E72F0447C10C4548473BBF5DAE25632710082E962F8ECD293FDAECE2FC59FCD31FBAEA3E9F4A9D8A4CE4D179594CC1C2838CF2FD83C4B189392F916FF7D9F894E5DF9BBFAAF9F2E716AFAF31457ED8CA6F9794711308040281402010080402814020100804028140F05E00F7AD8BDF8C8B2D040281E02DF31060CC90D8E2628163D5DC716BE6585CFDFF91B3BCD3F02DEBE773D9EF38CBF094A7B7EB3AAE9F7F5CD9EEB6FC8E5BE7F4D63F3FBB9DD49EBAEC5EE49DA63DFD64EBE79CDC9EC143ED79D47578A83D7BB8264F6A4F967D9AF740AFF6F493ADC79A8AFFBA58CF571E5F37E74FBBB676BCB2BBAD23649C489E7EFE3165EBE7BCB6EC43FA7166F63C46F934EDD98BDD0E95AD8FC79BB6E731AF433FD9A7790FF46A37DFE302814020100804028140201008040281402010082E04243F9D402010BC5D487E3A814020100804028140201008040281402010084E0798BBCF0C04617FAF759003CA14EE7A814070BC6F9D395F5CF65105B626C3901E7D04E5E909CA1D67868729C602EB14541DF4374F2351CA9BB130D4070B03A354673B33E6999F8E918F84A01A1B0173324F321E8727A17AFFB6DD2EE6A5CB8782D4963B575EFA4A10AAD188D54E34A9FEBF42BE8ECBA8939FECCD4ACBAEAFF7EFE59AD357A60723947F0FF3A2A6FB02B0B95603F36A9F6FBB8554918E638EBEE9CBD7A85CBA1B8252AA66E7F223D99DFE6DAEAC3A6C68DE9EB2ECE6CAF787E7B3ADF4BE9ADFC42C7953E3D40FCCDD9755F6475D4A993CBC6A55E47A1608DEE1B8B5F5E63EBCAAA5886BAF3A3E4EFFAFCF3F84CD47E3746C3B5FB4EB50FD540E309F52717E0E0A37C7A80EFEF6F7CFAE90AF98FF38009C6FC9462B477FB1EED2E028546B2D3A0773D5BDAA19F41BE6AA2B45225DE73E7FE8CCCFB4BE68D8E5DABCF5DB61B2B9BEDE3FEE0BA33C3363974BAA7FDBF90C94930F7DDBC5E7171EDF989B04F3DB09F2ADE5680EAAABBF423B739B64EDEF371DB2F4BE6627E66CDB1692A6DD16E5E3EBD84AD77D59D906E5AFDEB7C609FD2EF75D2010BC5B716B4BA16B5D7E0AF384B65329CA09578A5A735D9C93D6F30D2A6FAF18761D9A0BC633B0FBA2A5E6A8513B6728FE66975DEFE5F8BEFE6C2040F940F1FF9F7F7C020594A17C575EB5C5CF069CD7E1F9EE67C5547084E6CAA813CAE076741FED271BC1F5DDFDD3F59BEDEBB765578B3B5052F35F6CEBB07651F7F54C064A716C330ACD6494FA508A272C199A6DB93EF7ED25BD2358B66519E8FB71AECBB6D2FB8ABAB31E5446DB67E2725D0B04EFE01A84FB9D9FFD03FB0DDF75503567DB3E24F678FB88B8E4978D8AEDF39AC98473EDA0583CFC5CF259717BAE8CFE09FB81FD291DA137FB68AF7E3B6CB376F05E5F352BA7F69EEFB6DB517D45FBB0AD7AD55D20100804028140F0F68173485E6B107B08040241EFE035595C6BE4BD27F4A7B8BF4F71021CA710893A6216782DD52E2BFF9BFDC3B87D9CD73CA95C69D96B9BF8DECD6BA9E8BBF118BEBB77AD73ECEC3BD681F535D2CD6C8E74E1FD2D5E6776F7A39ACA403599B465B31EEE76F9B8BB7F1C93C16596E75E2BE63ABB95BCA37F7EF2D8EE7CBCA474AF9B59EA07CB70AFF3E832747BB29DF5357D5EB3E1B1C476D176A8133F33B9AF0281E0ED63BDB647FBF32575FF56538B563CDA7004CAB747A134198785018C232BC2FE8B55BAB7D1AFE2BEFFB691D0F6F47FA2BF4B3FDCB1FEDE9C506DFDA2EEFF1A347359479D6A62958ED7952FA9CD19B09B4BD1BE58AFFA728C40F5611216066F5B7106C93130C3F748EF6D230EC5A841EBC8E9DBCA0FFF7584EA98578256BC412CE1DD6EDA1D93F1535799E5715B761CCA8B7DEA87BB7FF8BF9F3C3D8664E62F0F2071E9B26D535DB6FDBEF1CB9A237E8EEB940DEB7876C8CAABB33C3305C5913165FF557B2CDB49678EB36A7ADE1E4BB9070482370B3D3F96970F69FFFA13C5BD9AEADEDD5D31288E8CE7B48BA19BB0A8CAEBB76ED0B70BB31F07217D65089A3F4DC1D2D7419A6FC53EFC98628EB30383604E1A14E3C0733EACC3735A3364C9D8300C98BD7409D221EFB919CE71DD7B548578AE33CF1B846CEC913547D4620ED627EF5019FB313B1086FACC7D3A5EFC266C7F676186C250FC76C8192FA18EF39C12CF677D292663C6F28F2C0FDB727FCBB11008D25C5CEF9F9F3CDA7BDCD951764FD8CF96F9A0F29D53371CF21CCF856C8BE28AD99E7A1DB4938931E0E61358EA0F2ADBAFA8E79FE9184BB7BE349651897B1308DEF81AEE931C6C65A61D73B9A69A17A10F597C8DB55DDAD3771DC33933FB99D3DCF75F187D044D7302662F0F1E399FC339E946B4B77CB775F4E3CA5F7AC5643C0D04BBE3A15D581C9BF65C4FF043762245767FFABB8F20FDF52D5A3F99BD1CA0788AD940F0C875835E74120804028140201008040281402010080402814020109C6F9E1F81402010BC19487E3A81402078BBF0E3F91108040281402010080402814020781B40FE18E6B0A97D1F237E71FC76B696C8D9655CCFC06F76F91B33E489C16FC790A397BF27A6EF657D7870E87B350FAE1B5D36B68BDC373A470DB65FA636A336478DCE8363F3FCF4F85D19F304E9FC3A6DD3B0E579E502294453B62E3AE70FF71BED82FCC89B19C35EFBB1F9755C6B422C63B352A3FED40D139A98AF49E347F2E215C2B688172991247B604E24AEA37325D1F9C819D4E190D7F97F74DE2594C1FC3FFA581EC6BB241008CE0EFC3D2FF2C194722DCADB86F7ECFC97D7EDF2566A8238699EC61EC26ECE80EA7D2B0F4441F9ED6AAA46BC36781FFBF1E0F4221BFF37FF7697386A9873017D57E1FB518B87CC68C23F57ADEFA4ABF3E9836FB5B5722FD0F30E21BFCED34B972DFE860EDF51D79AFACA2AFD7D76C3E27E70F3EB20AF10F21415EF8CC36E25E3E0D7E9CACFD491817E7B23F104367ECDD1B7DF3A3F129EE3E6159A57F6DC483CA0DC4DC82BC132D0CE5BC453D1E14A526D23FF118E999BFF87C7897997B8AFFA586EEDEC1F9B774920101C0F5E3C3F74FF4F67A0FC24070B13262C5CBE445C13B1FFF5995D6E27D107DC870DF5B76DE46079324F9C33C877839C32C8E783F32C3F1E1C9AFB7A70F6E8B2D927A0EFDD9A8BD97C3EC591101DD3F96A748E1B2F4E1C9E7B324F241F27FF5773F2EBA4543F914FCECD8761FBCE0EBF0EC7FBB9F975CA937760361086AD953C3CEEBBEAE0D7F1E3DCC079F9E4871F40BA3F00EBD371073F12FA6137AF9031F4FFB777063F6D64791EFFFD05FB1FEC6D0F2BCD6D0E7D9AD6288728AB516405AD76574EA356AFE8918566AD95AC0E33B334ED64D481A8E97882A2306D8F15404EB008B144ACA60E711C83844D04B1B00F46C81C4042BE20475C180E7D61DFEF577EC5AB72194C4212927C0F1F51945FBDDFAB57E55F3DD7FBBDEF2F22E5A77E17A08548D0393FEE67AE4B6B25EDBE484B1BF4EF13ADFFC3FE575F273D56DECBDBFED7BC96665DF8BE00F076F0D3F9115F9829D0E35F7DDEF138F65F73173E174DE25CE80B5FDFF2BA6DD2B6796C9C6B69D74CFD7B84668361F10FC548848A0F72F23CD88E0FBB74778EB6BB8C9F567E664EF93A535F279748A9675388E695CFE2FDA6DF66D8673D556D781C0851A3FEE28DF4753AD9F03E43DEC486DF73C9EF3A9D949F09000000000000000000000000000000000000F8A8E2D6E28849020080F719B7B6DF44BC120000000000000000003E0DF60E0E45A7873522D01F6703AFF1D33A3DE80F003E7C4C0D32D63B63BD2DD1ECCA1E697D79BFEF5A076C351EA74ACCD62BD05A5F5AD7C1D407ABDE9D72B4BEB6CA3B4EBD5A37CCAB4D26DA0886EE18FF653B6D6B757305DA557598E5BD36B8ED7ABFD65CD073957C1E5CA692C9BA34CBFCDAC16B915D3A736577BDAE635A36BAE94FAEC7EC8B15D5A7BA5EB30F8BADFD5C1F5FB3DC80DACE265DBA6A8DEA9AA11B77747EF0D7009C1F3AE5A7AB540FE8976A5A7424164243EAFF1D5AF8FE2F341FFCADE8866DC6065DE5FF7EF9AAAD037631408D9D1D7AD21F71F9E7CD990415476FD3E2ED3B549D495365F995F882D518EBF9D469BD7E28F658434DDBF0D353589FB7757DACC1315F4DCA97A924CD86AFDB5A136ADC6D8906445DFC24EB29FC52B58F3775D458B3CC3C0FB65D55E757191D75DAE5D27B50F536D2F6BEC5415B0F6DF9AEFDBF7533EDD8338FD136BAEDCF85CC867CB670ED4BFBF8D47DBB3F8D3E34FBBC967F617FFEE35F1DCD9F5C64C0D6B134AEE5C46FFE4B7439F67259DCFF009C13383FDD42F82B973F63ED9BED1739F135ECA39FFDF4E8681CA9C6717EE3293D06E3B1198FF9B60B199726EF7AC61E17175BFAC55CC6D410367D9B63C3E7B7B7A3132CC7477DC7AA8D6A59B48879ACCA9A67C5D63B10AE97CBF37B91A77D01A98BB7A77B7A8FC6CDADDFF7BBEA59B2A2DAAAB57A5DCF2855EFC4A54BA233AC7F3BF0B9725D15754CD1F3CEC5B4C1FF77D39FE253EF4D8A66E5E6F31CBDBC9F766CE93E34FB5CCEDDD016E67AF573CA4A58AA6FED7E5E9CB08ED5140200BC7BFCF2D3EDCB77DAFECDCB7EAC9E4ABEF576F0B879B78B7CA55A77FEB5DFA3B634C5F6378EC6AB8DB5F2A9EBA915361CEDF9AEFAB965837D7237FDA97D2EFB4C6DAB107DBD386FBE9EBB8592ABAFB70AF0C500000000000000003EAC58B3699EF36ABD8B2CB6F296A16F0000E0EC59E07CA00311C939C1F1023CA7F53018A6853F5DA3F9504072FCF09C96B96D7D3B6EC7A64D8CD2EC604A8E91F9B47455726854C607C91A4AD8F1666343544AAD911519A0D94B975C7384BC9FCB8F5FFE5A620024E7DA40947EA9E765FE30D7F385949FED1BA0E2409FCC6F59231376CCDCE8806383CB3FFCEA1B3BFE6EE24EFBFB5D1F4D0D8E177BA8DAC3F35AF3C180CB06CFFFCD5EBDEA7AF6484E92BE21E73C747BF9FCCCB672BDBAAEDA5A53FA968F591D4FB8CE8FDBCBFBBDEFBF1FFF2946CFFAFBA52EB31DAEBE4D14686BAD4AD6973DEEF7EEE992D898BDDA9EA384E73A1F5EE991EB377E39420BAA5EFDFE986D78DF7DAF46426485AFD1936B37A9965B76EE91D2D88CD307EBF5A673BF702E43DDDEDACFCF5DE7EABA166BF67CE3A2BA7E73A161891FA98F4528F7A04CDB09F5B7DF7D4E13A131C9E7C4F79EE46AED50EF93A83DCFCAED30EF05F33E34AFDF6EB3E9CC1B03701EE2D6F83B2A3E96CBA41F51AD7E40ABF1496A644664DF7AEC27D7B619BFA5E3C5B697975C3938CD38AB62FA673B86EBDA9FDAFC86E4B553FED88C61E3B8AE55F519C731F077C98C41CB293FC0BE6BBBB0A16CFC9B1D27A7CAEB3C72DDCEA5E978B187CA67729C9737668D73D779E7BF8A37869DF3D0EDE5F35B55E7A7DB2A71CDADF66EAA7EDC7A306AFBF0C894EBFCB8BDC7C5E235B213AED83DB36FEDB9B88C13DF66CEC33A316C3EE7ABCB3F8BDFA7C7BFFACCB1ED3D576FCC1CB775B790906B3D7DF17F9D3E30EF177D7DB82EEFB574C57CD70F9CEB574C3D70E21CB92E8E1DF4B685E3F05607ECE7FC7A32D5B1DEF5745ECE87DB61DE0BAEFBD0B87EF007E07DEAFCF8E5A77B3A3A2171A69C4FF24DEA3F2957DD93DE21DF38E15A79874ECAC7F636F2A9719C829D97AFA99E0596FA6E0F3BFEECB81C719DCEE36DB457C78C987DCBEF8DBC71CE27911B4BD3B43A27CE01FAF77FFD27272F1FD7CFFBFDD6C91C875F1F9C365F6057B12AEADE68A4E3675A6737D70F0000000000000000000000000000000000C0C703F2D30100C0FBC54FE707000000000000000000E03CF131E9FC3415511F7D770000382FBC2D9D1FD3C674EF90A31953BCFFC8D1A2D9CAE51D4D1C531FC79BAF82F52FBCBA183BEA59D1171AA460D8F6B1D9DC0EDD89D8B94652EAB911B8D243997894D2D93A45E319DA286468E47E4E7CF2959E801C3372374B5F7D1DA29E4B9769F0C7044D3D18A35BDFFC8122919B528E8F894663140CF450593D87CA3B0764B5B46126331BEAB330A51EC4291C1994F2333363D47325E4D485FB0B00E0E55DEAFCB8EA57FE596BC678F3A9991A3E7EF9E18E6370EC81ED87D5F6C4E404E554DD3BAD5C6CA1FEA8B4319B5CA6F8BD24D5B349CA550FC4778E5CEB9532A9495BAFE1FB9124C5669ED3F31759FAE96F490AFEF637D43710A5EC4D3BEF5E36D9FE5BE0F69DB4B47F682C4D6BA91F64DC9DBC75DB5517EE39008017BFFC74F2DE61F4B6F8D8AD8DBABC7FD0798957E2C9561EE0B2B3CDDA83669E369D178EB759BB50E782F3FA799D678DFF37F3A9E93C7212CF61E4AD33612D1ACE0FE7DD1F57F5C6398790FA3C1533FEAAB1753A9592316A7AE2678A242CE58763B4D13C74C6B9BCDD7325402935BE8DC5E2EAB8184563293A50E7C7F5C68C3C727E7E98C7E33C562E97B2529EEB6DAA31B65917EE390040B7716B3A07FC9BE657E7F7CA662EB86ED1DA64DDE6AD3B2DB1373837FD4E03F70F00000000000000000000000000000038EBB835000000EF2E6EAD86B97F00003877716B000000000000005E23177BEB7A3EBCB64EAFCB439F030080BD068EFD2FAF1BAEB2E64F6BFDB1D681A8A433B2C68DB70B2DDD325E67CCDB3CE7C76BE0F45A3CDEAEC4783D74C6B576BA104B39E565DDDCFD6C479D0BBFFDDC2EAE8FD7FD15793D75BDDE5A771D77EA35DBC4F5F0F384D74CF39A6BEDF7F5BA41BDBE9AD7677BED71997A2A4695648A56F9DC5A6DD7F5F136F795AE8B8FD765F6CA05673FF783EE5BA9AFA559C77DE4B5C96BCA37938F703F02F089B29AADD3E1AB652A65366825BF43FB6B29F169E9CF3E17DF373B92A1FD7AD6D6E6E90FCA31957455F9DD2AD5F3399A0B8DC867D5D4306DC626C57F17A3FD6EFD8AFC4E4BC76242EA2CFEED1EE58627BB5E6B5C08074587889F01F3EA38B6B7F04D2F551FB5B42876F2AE366D2BFFBA974F8BEE50E5C64DDBF60FE3F277793C79AC2DED1357A7A6E8E5945D767DFE67D96F45EED0DC409476B371575D95E76BB6EF1D1B92F35F49C469AE6F40F9F26569534DF9E6EA4C56DA542935DBB4901EFE61C87E3E6431870AC0C78EE4A71B0EBAF655AA07A271C6BA67736316CD5DB940F3CA2714876E88EF9BEE8B28FF9194B1A0D537207EC54A2C896FE471656EFC813D165CCAD2FC8F093976E1BFAFB86C70DD5C573112A1FA8E1AD386825459523E72A8D73D16EDA0E7931B9B718D616B93C3E227E74263B4F7AA2A7ED16C13974B5EBE4673E130355E64458BB3F46DC4D155B6C2112A7D673F2BBCF6B8FEC4E7BFA1A9DF05682162F795F6C77ACCBD9EB8E5D4357BB59FAAE3E36243DBB606C7A41CD765A93658CA776F66B3347DE102CD86A36D9A7275FEEDA1DA849842003E7E2A8FF2B49D9974BD33A8ACA9F16928402B850DDF77B63C96DB8C0DB7F955F6CD9DEC3CE91D72D9E03ADEE89DB26ADB5C2028BFFBD9B74DABEDCDE458C736B18F2C4607CE2CC6E44920485E8DBAB384C7DAD381086D15E087010000000000000080B3FAADBD57C69A9173BBA667AD7AFCE7FC2EE90DF5A8FD6273F89DFA59D4CBEF8B3AC53EE2DE031F1AD6984585813E9A0F47A8982E39B9E3383661361495F935BEDF793FCF37FD52CFB7CD6B79F36F488C433C43B3811E3B9F9DB2C1F377F5B11B1D6DD4F275970DBF7AF97B7CE7B35EC9F9C1B174C5999C9497188CD6F6AE35E1CC7DEDE5B26DC7CF470669311C219D0B24C7DB865FE86443D76BFA01CEA7B769655CE5CDF83BD3DEDE41D365DB1B33373B9CA1CDD42059E1513B7662FC7AFBFBFDFB29A78DBA4D0B993225FEE59F25BF8969C37BAEDEBA3663F7ECB61A39056B4B3B4EAE426EDF5CF08B369FC9F6F4B976B251CCD665CED4E2DC57EA1A5B4309279EC4B617A5951FC36DF5F27978FBDC6BC3BCAEA5560CCC71F71EBEE3E0BCE1A7F3A3F3C3F118A2517FE1CA1DC73109BADC7CF0B712B3B5191BECCA56BDCAB15C71896D601BF2BD89973ADAE0EF6EB736ACC11435AC31276E6C379B74B6176FDF75CA95C66694BF3C8AE7E5767059CEBFC77FC5D7287B95F13B4E7C34CF05FAD930EB35634DBC6DF2F6ADB6C7F598B6CD7213A13139F7CA987DDE1C63ACE339CC18EC873D57E4D9A4FB53B78963969F85C3B459DF716C78CFB5931F36730AAEE7D4F18584E4A7EAA6FF8FB3C131233AF7D5DF2F5F95BE7D7C314095E5BA7DDD636CB3DE16BBEDED733F1B7C5DE5D9ABEE19BF7C86CEBD873840704E757EBCF9E9744EB8FD561CAECE1DC763ABE99EDEA3B50A6A7FB1437EA142BCFD7ED7B158ECFFF4F77A21B5D6D186AEC7B421F57AF43038768CDB53BD9FA5D5EC0BDA5B4AD176FC9EC441F37689F377AAF3E3DFDDEC6777F3EE3171EE8FDF497BF8188EE5D5B94F3BDB70D7EBF23509ABADBCAC3731E2EF4C7BE6B637668E63FE2AE3B768BF7928752CDE6CF72F2FEF1FED33DBC4FE86C78DDBE909C706EFF7DA33298DCF483F7B730A4A2EC168F4F8774EC6B976B2A1D74D9A6B6C781D8BBDDF5EDBD2169BA3CEC3BCAEFAFC4C1BE675E5B8745F3FDCBAF7107F023E149D1FBD6EAEE0F3DD6BACBDD9DAE346EB1D9DB6E1F7DD7B1D1BEC9F755D3C76D47E9BB7F5BA6CBDCECFBB4EDB5E6762F8FA0E6BACBD36FCD67BCBB3ABE59BCDF29DEC796DB7FD5E595E72D6E0F9BDEBD995F8BF665B9BB49FE3F3706CF89CABF71DCD5EB9FC5A3905CD733DE99C4E039F875F9F9B36CCEBBA5DD8E8184FD8C0FB610000000000000000AFF91E03E70100F894E0F9E87F2CA7C9BA9EA04A7A59DEBD710C4123354C8B5313541AB4D734AF736C406B5EDDD4B5D13A38B2FF6EDCD1D4D11A3C95D9EE74C478CEC5D4F3A93E4ECB7BC1CA0F43AE36F1DC5AE9D628ED95336EDBDE36B5DA2B5A3BAD3669FD1F3FAD1D571C8455162D0C1DDBC69A10B591DE962ED29AB44FC7D7561FCF743E0FDC5F00802E747E78AE692E384456D8D6BA64FFC1B19BB99BA3B4D01B14FD1C3E66EE4E46F9B0B813DFA4756D786E65E11BBBCEC544C1D1D4E1D8A6A7915E2A4643BEF33127E9F914E379F1ABA5C1B0D3A6C65256741858CBF261CF9732BFAE6D9B6DE2FF757B796E5DB749B4293C5A3B7EEDD071D1AB231189A5E258D7ED172F9CFEAA8ED9B1011CFBEC377F679E0700009CA4F323EB11825FB4E2258ED7B2D92A953ACE739F45FB4C3D9FB9A107E23FED71E9F173ECA76D6F37F3F65A1F4EFF5FFA3E22B1B6BCE6C50AF6C95878F69B5B4E8CACDF79E09E030000000000000000CEE07D462BA70FFA020000DE0EAC5DC0F34A663E35DE57CF66A996B5A8CEB9D962476BBC5C39DB5ADBDEB54EDE9C74DE35AFDEFD7ACD1DBF6FDD2A575D79E8B83DFCB9F92C30D701F23A32CE8957B372D20EB6AD73C1158C7A38CE816D4BBC43EB786FBDBA0F249F462123F3756CDFBB5FFF2F1A4846DEBA556B4372939875E935626C5BAFDDE3B6E977CBFCFE59AF17E3679EA9730100F8F8757E745E37AFCECBE38B7FA6D5F92CAD67E3B49B4D532333E2D262589F3FD26DE01833FE6BEAB9340E9A640542E203BBCDCDBC5E3F74E21816321BA27DB370ED4B7ADA17A1A95F7FD6361FB690C82A1B7DB22EF759FC3E8D7FF61FB499FC41DAC9B1210FFB06684FD5A7EB11FFF7E35F6971C29236F1F17EF576D2ED31F78BE659F83AAD8E5C73FCFDE64CC2D649507E7557E6438F74D97EA967DBEAD2E76AEADA70AC053F27EC35BBB86701F814747E445FB2A5B128E3CA96CECB4ACA1ECF16D53898FDF74A3C7994F758F919332E4BEBCF987A2E3CAEE3F8B2A21A0F7AB5073AC5AD69CD212716F7DEA4683D6E669F4B3BDB722165ABD4D8A8D3AEF2F5D5D9B4F8AED5A951C7172E7EFDBD3C63743D665E64D64CE4E3FDEA75EBF674DADFA485DBB724FFA73E6FAD7B293E75C2D600DA6F36E5BCB4BE99399E6FA463AD98E4232DA17D8E598EC6692516C33D0BC0C7B85ECD47E747FC8B9303BE7BBD1789176BFDBE5F899E4DACACFE7DAFF3D0E96DF3FD836BCD446B1CCA3E9DB72BAD67877EFFC05A6F52AFCE69AFDAACDF05E8F726DDE8FC74DA6FEAD2F8D374DE33F8BD9FD92D945CE78277F000000000009F0E7A0CDE4973130000000000807741ADB0719437A13546E579BAADA565675B62C18C6DAF0E839F9682371F838E2933E3D3CCF9C27A79C315E3E58A8DD363E6E686CCB56D65B2AEF7C35CAF8E2FD3B6E5B838F2E20000CE3F3A86A0515DB363C70C5D3573DBD43CEBB66E9D7BAEB2FC8A9217AE38F9C5CC7A9D39C4967E59215D75E2B9584B6DBF653BD76FEB35987A6B73A111DB577BDAA475D524F71AAE3100E09CC7AD89BF4CDD97FC44BBE5AA8C21F5DCBE194776DAFC749BCF7312CFC6E3D4F552C11553E68D4F736206466F8BDFD571043A1E4EE7B3D3315D1C0F27B983B219673CECADEBD94F8F4ECCB3060000E7216ECD5C27E6E43B6BE994F1EF7E3326F675DE77480EF8AC3BA6CC8C4FF39BBBDB5DCA1AF170A7D772E373AAA792B8E6000000000000000000000000000000E05CE0A7B7060000E0DDC1F9E9F69B25F4050000000000000000003E39F49A11E8EC020080B126D9C8E5A6D7BAB16E8F999F4E6BED389A3F86068FDF7A389E0BD4FAE792BFC3D85F4DE69D5C7766FE365DC6C98167E47CD36DD2ED35737EC8BA3C550FE7FDE01C4C7E9A430000709EE1FC41857044347C642EEF7E4AF4D15E5E1FA5D57C95365FE4692F9F6CD3F9610D1E6F5D0B37EC3A58F7A172D7CE7B54FC615CFE6A8D9F95FC0EEDAFD9369E5CFC4FC95B542BDBFA103A4F1B6B4C58913B626F371B77DAA4F36668DBDAC65E2E4BD547B6164565F611AE2B00E0DCC2B9336BC3C176FF3999A1D5477919573EECF9527CEE44304CD33D019AED0D882F9C8F84C9527E51E7227E39D5AEDFB03A35E16C2F26588B274CA56F2352EFF4C520CD5EEDA7D9FFE9A7B92B17685ED9A88EDD232BDCAA97CB0442EAFF0895BEEB7772BEAD276E396DD21A9A0BDF045D36B84D9CBFF369A4578D8B43B8D60080731DB7B62D79843D798F33057AFCABCF3BFA572FACC1F324106CAB87DF2D3C8D44E861282C63E8B36AB7B74D3A371EAE29000000000000000000000000000000F81080CE0F0000BC5F383F5DAD801CC60000F0BEF0CB4F07000000000000000000F0B6A917F03E020000DE27ACDF805809000078BF2C0CDBDA12BB4D770C1B6F33DD6E9BC7EBED4EFB4D1BA7B1671E7F5ADB7EF5FAED378F3FC9C671E7F43AFDD94DBFBDADFEECA6DFDE567F9ED46FE8CF93BF03E0C386AF6B65FCA6685D720CDB42F82BF1CBF3CA3F4F06BF706DEF66263B6E9BC7D736EAB2DD69BFB6E167CFACD7BBDFACEBB4B6BD7575DACFC79C7C7E9DCF898FE9B4FFA4FE346D77B2F1B6FA93EBF2DB6F1ED3E99C4EEA4F7D3D3AD936DB7EDAFEECE69E7CDDFED4B6CFF23BD06D7F76B2EDFF1DC8C2977D0CBE58B47E9B6D316C8DEADAE9B68DE365BBD37E9FEDD7B2714ADBE6316F6CFB98F378A3F33BA5BD77D19FDDF4DBB1B6CDEBF1AEFBF394F76127DB67F91DE8B6DF8EED4F9F6B06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005EF6150D2B8FBE000080F7086B4BD72687D1170000F08E99BC14A4DA7050B657331BB457CEA05F0000E01D527994A7ED8C9D2B547CF1F80CFA05000000000000000000000000001562296A58292AA62C5A89C7A9108D0AFB1B052AC433548B4769B7794845B56F6BAD4A9558942A5659CAE8E375792EC7E5D1AF0000D03DB58D2615C2119A1B8852F55192F6F2695ACDEFD0E14E9E2AF753B4A53EFF65A7AC3E4BDBF37C535354B91B97EDBD5C9636770E69379B445F02004007662F7D450BE1AF9C78894EBE78F1EBEFD578F7B98C8D79BCBB572ED0744FAF33D6AD949AB43236249FF3B857C6C3073B52767BA9A0C6CB31F99FC7D087CD0DF43D000018EB374EF28B2B9982BC6F683B76AD7C14FFA6FC2D8F8BD1A7000000000000000000000000F0E1C7AB718CD9567947E6DC789BDF25F376B13507A763D8F8FD32C74DE8393B8E71D3F374BCCDEF9657E219DA6D363BC6ADF1FC1DCFF1F136D7B5D28A7BE377D3FABD33EF67DB7BAF6CDB7699A6CC0BD65331DA3BE0F9C1582B66AEE994E776E8B6F3317B07765B79AED1DB0E89CF8BF2B9B6DBD06DD77179DC2ED3866EAFAE87CBEC16324EBBB88DB8B70000DDB092AE2A7F9A111FC3FF2F8FDB716795F4B2F8168E61DB4C0DCB76AE3FD8FAACAA7C5195EAF91CCD8546E4B3AA2AB3199B141F588CF677B4C7B16D7BF9242D2696D4F13372EC744FA0ADDCCBA9A4F8B4D5911BF434725D7C9CB70CFBC86224D2565E3E5B7E25F1768DB2ED33AB8F3B6869ECE45DE5DBE6275B1AA1B9FFFB639B0D575B1ECFCADF7A61C37E2665EBB8BF00005DC5ADC9D86FFCBABD5D2FABF16C4CFC1B8F5779DCEA8C87D5B61E2FE61E94E9695FC01E43B7C6C65C466FBF1CBDE18C7BFDE233727FFC8E1ACA9F6DC7EFC931D3BFFFBAADCCAAF2637B4B292ADD49532D6B8F33B7D313AE327C2C8FC979BF599EDB68252C6AA45B6352F5CCE8143FA2CBB8CA1B6DDF6F1E4A7D8B37D3CAC60B970D7976A9325C8FF5E5D1B3645FFD16E0F3C33D0700E8366E4DBF8FD8DFE82E168D7DE271655762A9636394ED31F3D1EF7B69974F39FEBDCFCF03EDDFFD62E5D85FEAFDBABCF8427EAE144A7619E39D83F7785DC62CEF3D577ECFA0DF5398364CB6791CDCAADF5C6308000000000000000000000000000000C076A920F105E80B0000787F716BB5027283020000000000000000000000003874F269E835CA9B166BF0645D5A39E63A345E77568CA59DF56D3A279D5EFBCCDB5B99B894DBCA649DF572BC5FAF43D37A3EFC57AF9FC6B500007CCA3839E8965FD1F4EF2FD2930B5764FF7AF5C05FFB666959FE3EFDF39FED72F33F8BDFB52277441768371B97DC49A55BA3B457CE389A41D6D5A0CBA76F370F8F72E0E13A00003E01262F05A9361C74ED63FFB9596D8A061A6BA1AD4EDDA3F4AF2FD361B3E468A379EB59CFB11E45D88981631D32FEAB75205613B7683A10915C750F7BBEA47ADED6852C7D1B69AB2B79F91ACD85C3B83E00804F82CAA33C6D6726DBC6A4737D219A0B04E9D95F0628170C502E9152FE3A44F3F18CECF76AF7B2BF7D1A89D0E340881AF517F424107CADF6B0864E313A806B0300000000000000007CE4489E08F4030000BC376CEDF602FA020000DE230BC3F61C1DC70C43F3070000DECF9A8DCAF84DAA6D348D5C75E817000078A7BE58F217373BE6AA030000000000000000000000000000000000000000000000000000000000000000000000000000000000000080CDFF03505E2E89
-MediumImageOriginalSize=177000
-MediumImageWidth=177
-MediumImageHeight=250
-MediumImage=78DAEDBDF7771B47B62EFAFDA5EFFDF2D63B77DDBBDE3967E6DCB97326DA33F63849B615AC2C922229893993000912009173CE39070210403158942C2FBDDA1BEC26282BD9966CC9AA1FBEC5627785DDD585EA5DB56B7FFBC993277822212121212121212121212121212121212121212121718C782024FB41E29DC52381622428FB42E29DC64EB329FB41E2BD83D31B86D36CFCD1E55ABD4364D249188D6624C381D72AD3C3474F50739A7F72F95EAD85DD6CF2B9F71BB1348E3AF2F7FEB62156E8E2FACD614CCDAF617B65097747C6B1B4B681CF2E8E6079621A8F0E6B9C6F724E0B876113668B19B3D34B38ECB5F8FAE8F41A2AC53416EF4EE1D2D01D98D6E738EDF578313D3585F3FFFA000B3A231696E6F1D7BF7E08BBCB8E59719FCADE1763CE63EF8FB9C70205A30939AB074F1E1DF6C754BD8BAC660919BD0579A70F863FFD81D3F54C1EFEE1314496B750D0CE73DEE8921675317E631B5BA83AA3A89897A1FFE7D7A85B747CBF20E48E2F6E20B3B18A94C68C76DC01FFCC125AAE6DA4D7D790DFB6A066DE406CE236E77FB0778486F83FEB8889325AF82F9D45C1EC464EBB0ACB859BB85F2BE2FBA33D3986DE0244E3256C18AC585AD6A0592DC3AAD3C26CF7606951038B5E2BF23C46FDFE23DCBC740D9F9E398BBB572E624C8C55650C7B420978C22158D6A6118AA7512CE4399D49A5118BA6B0BDB68275A311F3B3B3585F37209A2A4227C625954DD47BC826C3AA2C7BAD437CDB6EA06AB5ABD7EC9FFC03C189311CD40AC81A9C084ECFA39349A3E20DA293AFA013EBCFE5D96D1B9A1E071AE108BC0BDB282E0E216F7362379FE93FE7A20EF7B219315E75288553D80B3BE1995C44CB6941C3EF4066D3884E2A8AC4FC3CFF86BE7BFC04A60F3F462194E4BC55BB09F5681A858D3554FD113C3EECC9F12321212121F15C906ED6F0BD3FFB4DC16FBE4678D5804EC80CDB8D6154C361A497E739DDCA96391D5E352367361CE73D49535EA55CC1603C558EEE0FA6A90D25ADB43198A67A953A284DF53E2DDB9B92F365B2FD1C3915D94EB7F766E41CEC9756B68183F6FBB1063DDADFC7D1D163D60329AD5E1B4C0FDC7F3AEF0BCB3D5DC771FA65F79FD7DE1B93F365B2BD8372BE2F7330AD5DAA36A358733B71D06AA2E6B4739AD64D05B116EBE5F3EA7ED36EB383BACB8DA2D38B663084763820D6504974D219B46231545D4ECE5BF5BAD12B37D1F43AB9BE8E9837BAD918D72BBFF312AF1BF5480D45570875B136EF96EE23383589E0DC127C3746B0F5A70FF0E4F13EBE6BC4386FDEEE87F3DC19E83EF802CEE15114E6EEA2946862EFF009AC672FA16033715EDB851BD8AFE651739BB9BED4D40C22776FC0353C81C7BB45D9EF12AF5DF74FAE6B51DAD48BFF1FF1B56E367FA267886FD7B7E59371D78E9FDCCB9A1C78487B6CC7FBB9BCAFBABB8BBD465D4DCB3E9678D338EC1DCA7E9078E7F5E14E228CBD4E8FF7ED7BE582983F7B0C4A93FD96D2749FFE1E340AA7D2F4F779E5E8FE609ACA296925EF605AA9574953BD4A39A58D3725E7CB64FB39722AB23DDDDE9B9073B09C22C37B71E62792426ADB8B5EDC05FFEC323AC532326BCB9CEE1DA753DB41B156B322323A7E2A4D7995720D6FE05439BA3F98E6368ED34A1B8369AA57A983D254AF5AEEB88D3725E7CB64FB3972F69E92F369D95EA79C83FD42F51EB4E4FA43424242424242424242424242424242424242E2CD2179AF0C63C188A3A3D3FBE9CDC3BD675E3F7566EEFB27228F19C96640F6A5C44F42418CB3DB9119AC275630EABB8DCF8D1F4093D946A811C6427812DB390356D236FC55FF2176EE45B8CC46528311DF3568625ACC8972C576FFFA7ACE81CA7E0D9AF01D14769B30A757FAFE4AF518D6331BD8C86C6133AB832EB588CDBC0D239165D8737A9523E033F39718094DC35AB463C43F0A63CE8AF59486D3D3E1356C44E7B96D6A673A34FA6AFE82AD3C3C253346234B30E58D580CDD84AEE8873BB7F2DCF323E4D7B7D739C441A338E05BA7816F6C0191F1EBD8F8F06BA4B59B482DF77DF9EEF70ED1887891D9D2C13FBD8CD0D82D846767D18DF4793B4AF6184ABE30FB03962C16941DDBAA0F607E5D8BC4F206DCC393ECB3975A37A2114EB1AFDFC35AA2EFB3B5AC41D61C80FDE3BF233439834A388BC095AF115B5CC34E288DC2E63A4A361BCA2E07E7778FCD23BD3CCB3E82DEA15BAA9CCA73287E86542FD5D14AE561FEE823F4F2699436FB3E8739CD862AE7DB8ED6834358327330949C48362208D79C984F9BB1129F42ACE642BC534467BF0C5755CC93DF1F71194D4283AB8E8B583C1EC3D576FF5CDB48701E9309BD18FB2BC876C2A7C6F0627C01AB691D8F61A3B84E63F88AF72E96A3737CD688C6F064780E8BD1BB7097BD3C6E3D951034C763784E8C61CA4B6D2F25B7B010187E35FE171AC34513D2DD0212AD0C4CB93544C5B5722BF242FFE86E32C6F64B928DECF1CD6018BD4A85CF96927F73AF5613EF7955B5D7272686101A1947C96A43E0D6382293775177F7FD021BA55DC4266651B61871D06AA1E177F5AF87C2A8F9FD68A50BD81575B7026EB6C1ED6633489ADDD84F45FBFE18A26D3A0B4B6759DBF932F69B4D3E2F5B0DC7F9BC155DEF88EBBD744CF5CFBE5F48A3EA1732178BA7E4A4E76844227CAE8BEA2D3BED5C47D91DC041BBC5BFDB0AA5451B8A9C529778BE2E41E59C45A3FC1E4AFC6C5D4297DDC47A5A0FABF8D6DAC498338B799074898DE40ABC15379C15BF983FB771F8A0EFCBBC993563217A072E916F236F4077BFC2D72D62DE6C1DD4102E9B5997F01E8F4F6F23067FDD8FB5B406CE8201AE4A001BB92DE48F759070A78252AF8090686725B98450D5FEDA9E2FBFBB8344C3037DC1C2BA843DBB0C9B68A7DC49BCD00F8D7409E5BC0C7D83DB7EB398D7626846FC48684D285A6C28E87527675285DE40D7EF2562C86834C818CDA8B8DCC8EA8DF8FEB0CB75E437C4773BDFE4BAB2062BF2DA35A13B18B87CD1EA1673A10B156F0875AF1F05A71FB9B56551AF1FFA7FFF7FD14C655136893EB3B8D0AD54D9873BBF25F48E5485CB29E75F77A22954847E7150498A36ECC86D6EA29388083D23C067BA79EED832A36CF3A01AF421B9A2432B1117B2ADF03C4DF5EC377738FDA0B523EA8BBF13BAC47CF82626622B30C497C538D6622CA2655DC223C69B498CD3642B2EF459038E1EB4B9CC6A640A1F6EFD0B576C97702B348154ADEF9FF18DEB3646E37A7CB5FD0DEB12EB91C9633DD98229A1E7FED7FA1FB0597021505C17E56660CDADF39A6E43E81913D1059CB388FA028B78F2F8F59D07F555C2D0A796E1AD87C5580E8B67BD8545A12B050A9AE796218E806E3228F4028FAA4B44271651F5D8D0F47B5897A806DD42771856F5E192CDC1FE2B07B51292AB1A34A242E710DFFAF4860EDFEDB6B90EC3C7E751715AB9AE82DD8DF0D40C92F37DAE8D83C327709EF918496714FEBBD388CCDC45D164E0F6A20B1AF4B209E607F088B28D4008A6BFFC0EA6F3D7111DBDCEE514D96BE10CD711BDF2257313D47D51E62F204E03E23760FD7A5507D7E4127C17CEC03F7C150F8F8E60BB368296A8BF623022B7D59F7BE86F41E8D972AE979078C367E0C91F69AF21BEEF625DDD2DB22E1168265997308B74AA1543BA9D8459DC577409672D0C7FC58C98C867ABBA11698659EF750ABDA3277489CE7E95750983D033E8BABF1E40A157E474A4E14798CA559CB014CD0246249B31B1660CF17DD29195FA2C451BCB42E96023C87F7FECF3914E5EBE279E477C4BA85EAF909BE4A775EAF374895DB13E225D42F54D117A00CD65CD6496D774059B5BE814625D94EA7F671F1C3E42C36D13EBB536FBBD148DC7FE89628D443E8965A11F94B7F57CFDC9E3FEBA98EED3FAED5E32CC69456FE1F5623ECF791BC190EACBB8DFD943DD1FE076DBA9B498CF6D68C552E2FF30FB2A926CE4E3C8E5C249EC970BAAFCFB959AD051C2D8DF69B19C8AEF64C56CE6B55C2795E472B466A575217D4FC87792D68A558F17F76B3555E60AC9E034AAFD427E94653157531DED648AFFA772E6AFAFF3DA92DAA3B61F8AF740CF4AB2B5E349CEB79B4FBD96311CB9B7837F6CFF0377FDC3B862BD8CCF0C7FC4746C1531F1CE9D99754CC5D6B098B2E0F76BBF47BB1BEDEB7E2D176E8597B0109884AF1680BBDCDFD309D592A83C7C822F74FFE26F70B2D6DF5BB28BF1A9137AEE90F716B6F32EA167CF9E2A379BD884AFB0CDD7B4A10BE87CDBEDFB3AEDED725EAA37B65747B090FCF1EBCD7A44FCDE42B8199C47B6E1849B7F6BA2FF0E4ACF2D53F2C4F0DD5E0B95631E2DD203FCDF5C81EBF215782F7D09D3B961C4579611BC75A3AF7BB4F7E13AF7191C57A7C5B53168FEF867786FCF2223F408F249ACB8DDD0FDF99F7CFD20E5EBF7D5CC0AB29A2D84478744DE45F1DEFB6B80F0B201BDB003CD9818AB9DC7AA2F632D914768681C61A16394CC3A78457BC13B53486E5BD957D13D320DBF908DCAA50C0EA4A64FF66D5A4E176242EF8DCE2E7039CAD3EB1C21B2B080ECD69AA8CFC4D7CAE1BCD06D26D81F323E3F0FE31F7E2FEA9D45493BD7E770985B12CF7E1DE1E12B2A4F97E1CC15943D6EF13B89C170F60B846E5CE572BE3BF3486B16B93D6A3B6FB6F1DE4DC1E5476A73AB5F2EDEC0E34EF6B58CE37DA1E7F61E3E52E759D291B36DF1FB3EEC3E33BF47CC63493137177B359E8715FD95E66A77D58BB898BBB39D0C620D777F8FB653E06B348FA6C57CBC77D814E5023C67D37DBF784F87DF1DA9F370BD9751E5A8EFD510A8DA50DEEFA0D089FD781E40A1EBD57AE9FE37478C45B2A5903C2FB2BBF0FEDADEBEC091EA63F82CDC2F577E729F1F081D9AF6D29E77BF9D4CF25CF8F098134CD5D56BF517D64BE59EBEF66077EFA93CD91F3CD760B9A3FDBD673EE77EFD875C15F46DE814C43CFF02FE489A8F0F9B65DE47A4BC343753B907EC07F7E8678F5FDA97DD3BDA7FABF6D69472CDDDC2AFE2237BD4E9BE563F437A877BA5CC8BFDCB9305ECE77FBD3D80D7C94741FBEB852DCD4BF391DEF4B27E791554C478B911BC8351EF303EDDFA087FD1FE3BEB12A40FDFF5DCC46C641AC3A175FCAF95FF44B9D1FFF66B6353F8D4F205866C97795F225A3BD609E27AF1FDAFE1D2F627AC0F2BFB1277E33ADC0DDCE47D8911DF2D5C755EC4ADE06D58735AFE0D5D740E63D87B13D7BD3730E6B980E48EBFBF9F514EF4F3066661A9C670D9FA775C715E46B46279E5E7F3F0BEC42A2E7AEFC094D160C8FE2996631631377B9FBF1F67720AFDE111FB192A7A5FF8DA4598CF9C635D82EC74C1B15BF089EF267F2FCA5DB8CE7E84E8F23632162F34BFFB0F6C7F761E05F10DDFF8AFFF426E5D0BCB57437C5DD1257C43B761FEEC22D2AB93F00B9D80F808D3E23BAEB4171A1D416C6E558C852DD83EFF040FEEF77DC4FD93333C77519EEDCFBF82FEF3AF119B5E426A6D09AD707F5E8F2CAD23A7370819C7B0F9D119C4A6C6445D8B08CC2F717BABBFFF1BE29377111CBDA53E73D1EC46C616621D8064EE6512482E4CC13B3A09EFCD3184EF5C43C21C436451CBCF9A3339D08EF9F9996C1FFD4DED0BD7AD19C445DFC4363478BCDF56E58C4C8C22B53C03E3F94918FFF121978B2DAC20B5B4C8FDE91B1E4566EE36B6BFBC8E8A498F7AA2FE56D9E968BF5997DE627B9BB51A41A66E15E5B40856FAFB36D309033ABB658C8527B0965880AF6C5165D367B47094CC62ECCF4213B9054D5C8372F7D5758A67D9E9F469B23FDD7F6D763A9E53845ED008C6C4DA2F8CA258F3913D8DEC6D65913E12FA0C7D3FE9BAB2A623DB5C577CBFC91696DF7608BDA1C9EB22D233A93DEBF91BBC97C6ED05E32AEF31E555DACC88743914437C498B86CF89ECFAF2899E12F420B56562FB9F62B3A3B519B5A7F028E7B74FB89A3BE51D1CEDB6B99C2273CD61EDEB0976BB586766D0AA75C4FAB5AF03E5451E5AE7D23351BF287DA1D81EBBF92CEB0F8A9C35B18EF38D4D21B3BA20D6C2FD3E225D89FA85E4210ED3B2D0470A2EAF58F705D06D1E4A3B9D84B4D3FD42763AD225BCA21E63C18965D19EA3E25175893765A7F3375368F432AFCD4E77B07B24E62E332A6E1FEA3E2FDBE9ECE7BF526D6734DFDCCF464ED9E312224FC56A15734FBF8E4EA921D27AD4BC1EA1CBD8C49A7E0D75DA970A8678EFAA25E6A68AC580F4C6C9FE9CC4892E311E1A8136398F3BBE99537B6B61F14D5F1363D75CF2E24F9B7F57F7D66A3B2E5C768F60CC79BDBF4756EC7F93AC792FFCBD5DDCB0D299B2C3537B6B9B627CF2DE5A39024D7484CBD98FCB8DC536102BE9E13ADE5BABEDD55FDBF3452A3E78CA3E2CA4B7516C8561CC6DA8D79EDB27D906F6AB19E4CD56756F2D78631CBE91614486AFC0393C89BC655BE88BFD3DA783EE11D2CB73E29BAE113A6200F5700439AB0D25BD51E54A7A90EBEBDFBDD621CC1FFE379AD1381CDF0CE1B0DBDFFB695776843EAC4156E8B135BF0FA67F7E86BC51878ACD28F4D1BB424F5882F5EF7F1575FBE5B87D87F6D65ECB9EC033F6D6E81BA13CEB9BD85B7BD6FED6C3DEAEAA6B13D722F12E92BE58B43B7FE4DE59568ED9D760A73396851EBF5F655B04E5F5D7FC3FB0D329F636B2CF990A66D67B69ECC75A69F1DBD8E1FB1931CEE9B74275A7DA7D7B1C9D87A7FCE9E3FFA97EDA17F634C4DF6EFE67D9E9E877946E05106E67D5DF8FC4BB8F9F62A723BBD96C7413B3DE6B425F38998B06ED741E31CF3AF29B98F69EEDCF59B447508E6239BD02ADEF1682952816C35B9C6728BA85BDDD38EB17F7BB421F3E78025DE02A669266B6D35DF0CF42276498F29CF95976BA74378015EF1D6C662C0857E45996DF944EBC97635DA27D6C53A075D08B748995F82C966313F0577DB09543EAFC3C13D78A31AA17EB403F92AD2836D2EB3067FAF1635AE29BEE28D8C4FF2B708B79DC5C744027C69225BB2ED685624CD50398173A33EDDFE5F7F7C43C1C17FAF5367242875D486810A887602D6CFF68BB4E91D7747D9DA62674244D7A0DE69C5EACE9D2F2DD4BBC167FBA9F925742E2E7DAE96EFAE7B0149EC35C78926D5ECA3C3C2BE6E1DB4913CE3B2731E1BB80D558DFEE34129AC105DB65FC55FF156E87A771C7FD35DBF456C45A7DDA7F0597BDA33066FAB6C9EBDE396C2696F0E1F65904CA16B6F5517B965A165F083DE7C73EDFA09D2E593363523CD366C6005FC92ADFFF6F686FEDC7DAE9260363B8E9BD8ECDF81CB632EE937DE3BC0DE3518D282BCAC7EE603BB376AC7B68C5EF428B3BDE1BF0D713AC3F904D6F3CBCCCBE75CBE92DC4EBFD3DA369F1DBD8CEE8311A9E45A995C0547881DB5B495B5ED987EE79763ADA13090B7DC451F623D39471D62524242424242424242424DE7DBC8E33F0BFA5FDB23771065EE2EDB3D38D7AEF9CF8C845B760DA6921B913C564E0126AED0C866CE778AF81EC714FFBD3856A6104AAEE5F6EEF7AC04E678FAFC35F36896B7EBEF6AAFE7434AE4B5BB3C86D3B119F9E806F681155AB9EB9A094FB79719FFCEC882F8A62F5F159DAC61102372E2271FBAE2873977DEB1A9506FBE60DFAA9913F9DE58B73EC87165E584059BF2CDA32A87E7194AE0A99C8F78E7CE8BEEF24E5D8FD99763A8D189FB3B15984AB4EB6B1D9CB5E18D2CB30156DF0566D7097B6E12A3BD81EA79CBDB495ECFDB397653DCC95C06BE59078553BDDDE778F61CB6911E4B3972FB6D3ED55AB023BEA19F8FCFA32120B4BCC4D923158D82FA23AE0334AF7F78BA7CFE31CEC1DE168E7F9E732DAF1E7CB3018DB4FC6F9FBF5206D6F126F2BEFE56C68120B190BB653F3188FAD6335E7649BDC427C0669A14B5C775EC45C700C96CC469F2F46CC23EEB2957D9116526B5CEE977ABE41DE4B7FD985CDC434DB656ABDD02BF35E128F4F37ED675ECB946E1B815B77101ABA828AC5A4DE6F8BFBE41796DF363227267F03C225246746513298109E5F67DECB7A22CFDC93B1C915546C7D5EC9B4C18D9446C7BC96A9F54D74CB35E6A1CC9A1DD88D3B541ECA6AA224C7EC6BB2D38DFA27311E1C873D6FE031BC91778B313CC963D896DFC25A74063342A7DE4EF5ED7486CC26B4391B8F6173D9C2E57EA9E71BB4D3A55A596C88E7FA29FE74C48D10BD3B8DC2A616A119A1578F8E23AFD39CE2BDCC68D799D7B26CEEEB18BBBB47C86B56D9D79DFCE2C84F6D5FAC17997B329646CDD6B777931F5ED5EB676E1185F792B94B32E9D33C94E1B01CB31212BF41D037F3E1618F7DC854FDC2EA41C164659FAE86DB89D48606B68F3F45D96E11DF4F23F329EE57FAE7D18963B1576D22BD38C969C56FECFECEBEF8566E88B96A19CD541179E356DFDFCC6343D5611175DA51306C707D458797B91993DA2D94457A371D625EC8AA989F1AC1FE7AEC60FF11B21B1B7CBD20BECDC40B99D2E8915A5BE9FB9E79BDA88643E2FF2D44A626B90DF97EDF1F90DF98E243C6E3D21746CEA0679FAE8CF876A6E6C71118BF8D1D8F8B7DC50C9F9D47C5A0E5BCD5521BD56207A6BF7E8076AD8A07B9FE182E25DAA868C7E01F9912FA9E19A16BE7D9DFAC9B4A2270E91338C716915F1E472BE245C11541616D1A8129A123C6E2F86E27C3BE8F6521477AB97FF6EDDBC3C748AFAF0B5D7305C1090D5C4397B98EE4EC28CBD91072956C46C435620C4F6BB80DF96E2524242424242424242424E4999F5FC69FEE6D3EF3F36D7BFFAD906DB7B3874E5072A4BC497FBA3F9A2EC35BD8607ECA91E034168237FB3EFBF75B70A7D631E6BB8391D004F365FED1741EE39E4B588B4D63356542A864E57A15B9286FA896665FB891F032EC490BE602377F997D9AA7782FEFDD7F8CF09D61F8EF2EA2A0EDDB18531B7AC497E7F9DC44D9A647C53085C0C40C768B25954F926C25A1B11BE8959BF07E7D0ECEB151D8FFF5519F637AE836DC9747984F32B6A455E3BDA46C318E17A7FF3FFF8D278FFAE72488F7D23BDEE7B4B69D3F87E09511246627B0FDD9651CD452DCB6E5FC4D2CFF8FDFC374FEAAB4D3FD0C7F3AB2D9116F03F15312679B628FD35743580BDD15BF872551EF32F3658EC756C4F825DF390DB4690366A33AAEF7C9C37EDC1A7D7A133B07876C635B481890DB49B08DED97E893A7ED74C4B7D62B1571BFD563AE479E1389F7BF58663EC9FD660DC5B5BB6ABC38854FF280C6F08D61543C6E34C22114CD668E6F40F638E2BD6C4522CC27195FD3A9F15E88AB588917A7C63708C6B9BD8AD3297E2F76B6FB29B1EA3AE90CB74DE5C8164871EDE4DC2C2121F12EE359BC97BD7A1735479FF792E2C551AC37251E05A54B1E3FAA1E27DB65480FC86A4FE2E826343AB41349DC3BD64B14FB65D9E1405ADC232E4B6E43E81B6CB3748538C61DD9373D63B3C82D4E728CBB86DFC3B647A56D3AD759D06A507205B90EB275E6AD6E6E9BEA6885BC58FBD317286D2CB1CCFCED681F721D2427CDEBA1D1BBA76CAE245B6AD3C0DF8BAADBCDF1F006E3DAE5DD51216785E52C7B626C4F258E4FE2E1A46F55562BDA4AA4D4676A26B2DC1EB551F686D9E6DA4A15987B9BFB4ED4D14986D87E9BD9DC442BEC65D9BA95A6CA5D2CF113F5ABA7782FF96CD9FC38FC93B3CC7B199C5E50C737A5EF0B3D20357D438D976CFEFCA27A16C8737344BCBB887A0E48B15F4617D6E01E19632E4BA50DB281260D4E3186436CDF8C4ECD22393705DD9FFF8CBA27C8B647A56DD277CC9F7F81F4D636D75110638D6C9DD436D5416337BD6981F1D3332CB3D206D5A1C675BE397ECAE64AB2B584AE64FD664CC8EC61DB2AB5A7E83931CD162A6603DB56BBFB4FD8264B32AB67046F5D45786AFEF8991EA1B773C4ED511BD90D2DDB5C133AA3AA8FD5F32DB6C992FD36A9D371EC28AAEFE0F01176537939167FAE4EFC14EF65D9EE51797F0763AE509AC62ACD8D14E34BE11C1EBC3FF83FE57D2CD6D14FF35B12BF2BF1B5BF4CAEA7EBFB2978969C8A6C84C366FD85EDD1997C25DECD20C7E7777BBD1F2DFFD3E7FB9F15EFE665789DBC979B593DC78109D73C48F76AA8DD2FA83C93AE8A93F92B150E4C8A11A7F0BBBA1B3195F752593752F95F634FEE59F1E9E87DED8A355D9362AA517C3AB3F32456DD716CB907AD36F3B1D2BE84122388F40325661BC57FA334ADC194987483B1DE386F388076B68CC3769B638A2BED53BCB8B65803B6E3116E43F92D51EC38FA36D3BC4671DF481E8A9137281BC547188C5547790763E7518C3BCA4332530CBC4E26DB8F55279E83D68D549F12AB8EDA50BE3F5C87989FA98EAACBC96D501D4A5EBA4FDF8A5F4227789DBC97D3F1752C67748896E30834C4B7488CFB9563DF3B77C9CCFC954ADECDAC1589BA8779B66D9528BABB45F6B753C6F0C7FA2B78F4F0D739F3FDB43FDDFED113F8AF5F5563C0B98627E0387F96D3E40B97D9DA42E0C625ACFFE1CF48CECF60EBEF9FF5F547675A8DD936FF7FFD0F4E6726C6D59874CEA13B1CEB8DF2EE34F7509813FAE9A609798309CE6F86D41884142FAE6431213C7E0DBA0FBEE0B8340F49171811FAF2DA1CFBE71584AEDE4D7860FCD779382E5D57650BCFACA8B1EA688ECDCC5FEBCB7C1C3B8FFCF3F2A26E92B9EC32C271F106C7D1EB045DA8B9CD1C734FFFB7BFF1BE1E9DA752E2E851ACBAF402C5E45D4174F41AC766F40D8D23ADDBE6BC149FEF75C5507C13FE74CFE3BDD4E44CF0D683B0161C70571CD8CAAE31CFE476560773DEC8FC954A1DEE7A0C96BC89E31D907F9DAFD68F7540FCF1ACB755626AFA5739933AE04FC7B13F37B5781DB1D45E84ACC9F18378742C4BA38EAE18E3DFEFEFBCD027EF55FCEEBEEBBE3AC7FE8BEAEB664FF455D25FCBBA2D54438957D287DE46FC96EC7412EFB79DEE9CE70ED6E373B8621F83BBB00D4FB11F2F652438876F9C1739FEDC84EF2AFBDE0D725DBE490CF25E5A531B6CEB9B8D2FBF306ECDD3763AD2EB28B69AE1DA18D2A32362AD3EA7CEC9864FCEA3E17620B630C5FE742DBF195EA173500CB8FC5ADFEE9836FBB1F5C1E76C430B5D3D0BDB992FD9C6E6BA7C99BFBB54877FF80E0257BE9063F257B6D319F20ED84B7684C4BA4DF1A1A3EBD66A56E8C6568E3FB79E5A643ECC41AECB5FDA9F8EF839951878AF62A7237B1BC5568BCD4D20393B89B4DEAAAEC1C9DE466B1B8AE5C671EB0A453482615E872931E5681F80BEB164436B078288DD9D641B5B3392506D76BD62E1D43A4E42424242E2B7616F7C5F9ED7F5F9C7F0CE6DA1E3DD80F1EB0BA886C3884E8C71BA952D73DA3BB78D9C61F538EF499AF22AE50A06E3A972747F304D6D2869A58DC134D5ABD44169AAF769D9DE949C2F93EDE7C8A9C876BABD3723E760BFECB50E71D06ECADFB484C4DB6E537DD4B7DD34C4FAE5E8F01065637F5D71B877889AD3CEEB11B6C7506CE96291F3D2B940B2CD905DA99BEFDB61F87F313FECD5CA6C97223B10E5A5750AD97F14DB946263229B0FC5A5A6354D7849871D8791EF378221B6F9D0FAE8B07B62F351EC43649B6AE72B6C4BA23ADAF124A7C9FE45F5515E3ACFA2D8A314BB18FD55EC51F2BDFFF6F4A65A3080F9FFFC18DD880DCD58FF0CC7D1DE11C2B34B28582936BA81391D43E3736CE7C91ACDF08C2EC0F5C59FD1AE3651F6A7C5B80B23B5B484B400F13E16F406CE4BF6A6D8CC22DBA694BA79BF40B30DEF8DDBBCB794D932C177E5C229AEC7D0D42252EB06D5E6A3D887C836E5BF3EC4B6243A6345F6212A57728591D3ADF6D3C12AB73DC817995CDB50ED51F2BDFFF6C630D9BCE97C358D079A6F957B34CF7DDB6DFFE0BCCAB3CEC750DEC39DF20BF3BE2C4E2B9F457985B32D4A8C5992BD6CB4E1C16EE7541DDF1D1D72DBCF3BDB22212121F1B6715529FC8E1212EF2AC81E95DAF6A21777C13FBB8C4EB18CCCDA32A77BC7E9D4761055AF1591D1F15369CAAB946B7803A7CAD1FDC134B7719C56DA184C53BD4A1D94A67AD572C76DBC29395F26DBCF91B3F7949C4FCBF63AE51CEC17AAF7A025E7270909090909090909090909090909090909098937C77B798A3FE07BD9A712BFBC3FDD6A7212639E5B984B3B31EBBDCC71B996122BEC4F67C999F08D679EFDEDFE6DF6FFC60DFBA77DBFE3669AE3849EF34E2056DEC24A701C9745BA753F8D64D5CD7EA2C3BE3B180D4D63EFDB1AB2DD3C86FC77106FC5E0CC6FC9BE9778EDFE74B6A20DF5FD0EBC553B8FBF782B8170D982DAFD1A9ABB65F6B773162C28DFEBF3BA50DC581AC3B14E01059127D91663BA1E621E948C289BDC6DA1DD4B2150EDFBD491EFFF726C1EC94E99FDF364DF4B484848F441B16EF5B94DAC25B570131F4FD10287F8EBACB8B0915C11F37112A6BC05EB693D56E30BCC2DA594257E2953D98FCE6E0AC18A079B05072ABB051C1E34782EDFCAE8B8BE6C3B036BD18CCDEC363CCD14D24D27E70D3562D84CADE0AFFAB3C8B6C2D0153C28EFD59803CB51762250F1E2F1777BF23D49BC5497D8488EC19C33C2BD53C142F01AFBAE072A76E6910A57FDD8CCF9A04DCEE35FFA4F31E9BBC4E52CB5243CF975DC8EAFC351116332B984D9F092D02542F096DD42BF68212E740BAA6F25A583B711C69F36FF0EBB28E72DAC886B262C8767E12E07301E5A84A364637F7F45AE0BAE5BC836E2D0A5D7E57B927829F61FB47FC04B45FA6BAD973EF5BFC223F132EC3EE8F1FEC4E183EE4F92E7C7B4252121212121212121212121F1BEE3A05160AEC737CDAF2B21F1A640FE580F1F3D42379992FD21212121F136F93B475328595D1C4B2D63B4A06CB5739CB686D7CE319CCA6E1773901017495AB3A2F249516CB576A18CFCC60AC72FEB64F36ACCB2FDF621CA262D2AA134DAB110BEDB3DE160A13866AD74120F5B0D4EB71309D4DD66D8CF7FA5729D502CB38AC72BEA5E473D10E0F89B74BD93AFA124E4A4986D2BFFFE6794B75738B65A7CCB80FCD29DBECEB4FF08D98D0DE48D268EDF46B1DC3AE9AC2A5BA7D440D9ACE7B86965AB85E3B35502618E314771D694F874947730B65A371561BE9684D684C34A86EF27B55B68E52BA86CAF73BC188AE5C6B1EAD2E97E1B42D64E3CA2E66D84121CB78E62CB511D94B7E270F59FC9E947CD6646C164E0F67AB92CE7E5BDF8E3987335AF0771EDB6780F6B6AEC388AF5461CC8143B2EB1B4846634A63E2B81DA50FA99DE59433C6BC1B0C1EF8CFB36E8E6676AFA82DC1E3D7F4EF467626E5ED53BE9F994F65866A79D63F5D1BD66AAC87D48E9464AF4858DE2E87998CB8C62EED1B356BD14934EA77235535F1C342A1C2BEFC78C55E24D546422DE44255D0B67105E5C81E3DA554485DC256704F64FFE01FDBF2E22B9B40CE7998FFBE372578C0DCD12BF53FA3F3EAF416EC32064F521B9AA41B7DA44C9B0C9F7EE778F60FEF81F2827B2D80B53EC569B2A47DEE6445EBBCEEF97D2F7B21944271651771A457FF6639A65368D621CA4905E17FDE50EA0EC74F4E3FB2493A8B83CF08F8E2170670279F11E82D3F328982DA8FB3C1C7B8BB887D23AA378E72E74C4EF276BB0A09D49AAB2514CEFB490BD5628B16C55BB89F9DC5A8914AA361DEAB1249A7E0FE76D575AD82F26589EDD425F07238EB8835A3F0E4ED51F41239A44767505F7C5B55E3E01EFCD61742B656EC37BEB0EF64A19356FCA16447171A81FB3B652E2BC153116E899223377D10CF9594E6AAF1C49735EA5DF48B6E8A24EFC2E1DE2999CA8953A2C7F7255A7BE4BD7D0285A620C2BCF4A7D416D28FD4CEF2C3C35899A650305AB59CC094D143617F99952B630B747CF9F3799E11A1823F47CF54888FB82EACB39C5EF61A16F6FA5B98DFA90FBAB7D84FCBA16D56054FC9E9679DCD2B3D27B084E6B70D4AAAA7DB15B29A051DA95DF1109099A972A35E6E56F84821C17AD198E328724A14CFF8B6F82F28D27DECB9379C1C8F1B9E92F7152EED66ACC5FC975363B6805DCC7F34D8539DE76CB27673189D7FF24865A472D47F306F170D2F5C13802149795BE4DC4694931D92ADEB0D051E2E866633F781EA58E83DE21CBADC46153DAEB715C6F1B7C5747109B5E4627D28FC956757BB83E859F93E7DC7052E5E73CDAEFA9BC9E4ADC37F3D7D7B157CE711B4A2C58E2DC54E2CC11AF5DC3EF57793D956F29F173D23C4472521F29313AA93D9273303E1D3DBFC23F4A31E9A81F2AAEF733E67876F9246E5C6C794D4D17852E5C0B89B97F669C392BBB851632AB53F08BB9DF373C06E797FFE07CF54C97792F157D98B82E43B72791D36BB85CDAE866FE4AE5FB43DF9EAADB8BC2B60DC1AB57508E97F1B8D3E7132C886F556EDBC431E0E2427F51CA754BF71114DFBAD0CC0A1EB46A6ADEA0C6C43C9B879528BE6BC4109D5982F5CC2544EEDE507F330A5FAB5287E7EB2F858E32C9DC99D416C577AB7BB7510EE7E13DF7199C3746B0F6D733F05FBE8E52A2806E3EC6F565B66CCCCFC967F606F839D3420F5562CE2971DF7C7756E03AFF0DB741F1E4283E18C78013BF6B8A33473CA2BDB083FB67900F94F839A3B39AFEB35EBBC63A245D4F6FDB111072E93EF890EB539E3F2E745EE21FA5D879EBFFF1BF61BA32FC5E8EE1A3FDFD67A669DE6AC7333C1F34427D5E608AF9CAF130855E47BF7F25EFD3BC970A0663A12A78D0DBE5774AF3664DCC450F685E7CC5BD699A43691E7FD6BD5789CFF63CBC8893F345F5FED8D8B3C4C5ACC42B57E2DB3E2FBEEB60DDFBF557E3737FB077247508098977189D6A1769B19EAFF8FC886F1A9058D620B5308FF8F87584264F62C5C726571011DFBABC6E0D91E52DB1D637C0F0A73FC037348CBA537CDF666791DD76C2F4F1DFE117DFF687B504AFF9530B6B62ADBB89C29656AC7D3DF04D2D20AFD7C33F7C0BA1D1FE5A36B56E641D302EBEA905D336B7A1FFE7D7482C2EC2FCD147F23D49BC706F8DF61A33DA5524E76FA31909C0FAE565743231DE4F4A1B5C2A177BDA6C47F4CE94589338D0C95778CCD19E4E68FA0E9A1EC7A9FD34CFE422EFF35039EBF96B22CF6D044786903179E01FB901F35FFE0B85701CB9F9A9FE7A309812E356C3FB52DD94486FAEF3FECF6E3EC37B61F27D494848FC9641B6947AC0CBFB559D447FADACD898C8E6B55FEDC7994EAD6D896FFB32DBECC876530BC6D8E645FB55B40E24BB452BECE3FB64BB51D63029AD5ECCDB55BE4EF69A8A3F80B2C375E29F27EE2BB630B231ED164BA858FA7B0A07877D9B90627BA27AC93655F5F5D795DDCA0E9A8120DBA32A4E07971B94996C42F71231B647516CEC9AAFFF9CED6848CDDB4EA4D88E45F75B612FDBA6C84E97D76FA1ED379FB2D3517DD45764372B981D88CDCDA3E1F3E060F7886D8849EDA6AA7BD1DE485AABE5FC89B96934834139DE5E3382DF7CCDBA04D94BB57F3A87822B82C2DAB46A6BF96E2783E0F482BA5719D76CC17F7D0CE9E539F827C598316861FEFCA278677DFF21EFCDBBD87159F9BEE7E688FA2E1D37C65173B9F97ACEEC454AE80C15D349CC66BAEFBA7A1591E12BA887FBBF21E56F67E7089EAF3E1563CDCCBF13AA376B748971D6B73B55D26DA1776CC03376575C73A015F19E923929749D7B8990D05FA6109B5F44795B0FEB3763386CE4D4BC19A309D6BFFF558CDB10F2063D2ADA31D4C5DAA0E8F2212864F38D0CB36C4A7DA58D25C49734BC3F1714F75AD90676223124D735882C6CA9BA17FF067311EEDB9ACD88D0F0901C77121212BF9A9D4E8955477BA3BC177D6C73A27DCDC271CC39DA3726FBD783DD1E1E1E1EF663CE915E6136B21C8A4D8BE2E1C5E734C86B67F97B4DE538265D268D86DBC67590FD8EDAEEC7CEABB32D8B64A5BD6E4557AA0B9DA61989A09D3A2E2764680643A764263B1DD571D82C73BD83322B71F4D8EE600DB33CBC872E64A63EA03628A638DBDE449AEC6DAD00E952112E4731F7EED76AEA3329722ADF2F7A6E2A4779C9FED71179481EC5365767DBDC23966730561FC9497FA95F14BBE1D3F1FE384EBA902DA759406852C3F915FBE5E0FEBFB4D39DD8E90E3B5D84EE4EB0DE52F70450B19F9CF9710E8D22BAB4CEF636B27F45371DB07E40B6B40DD5CEA5FBE00BE4D7E6FA726F9AA0FBD755F887BF81F7C237F05FFA926D65DE5B77D9DE4675543CE219DC66CE1BD3F66D7AC99951B6B1F1D9BC7C87ED5CE1B96594CC3A2ED7EE3C661914FBD99ED0C5C94E477550FC3DAAF7BB6E5995393836AD3E5F3E526779C89E463A13F545DAE9133AB5836D6F45BB97ED82EBBFFB03F41F7FC6E528E65E497BF24C8A9CDF77FAF6217AEE8346969F83EC7FA9B9719647B1CD39CF9D51FB9062F291AD8F62F5919CF64BD7B85F14BBE1D3F1FE284FD9EF85EDC24D58BFF848B47B916D8BF9751DF7CBBB3286E97C8162276A66326A9AD627259B13458FD009AD0E9EA7520B1A64E8BC572281824E7772E6CC6855CFAD0DA2E6F19FB63D1D89F7B4B62A74C72CAA1613EE174F6C7BDD6C5EB58BED35EA27B6A79F18674EA9E355EC779DEC899DAE2BE6F46FCB45310F855E58EFA0CC2F4359B7F5425B643B9E7EB90DEE39CFD18EE7D5BA07F30CCAF9B23E7A1F6CD06F120FEEBF1DE7ECEAC902F6F3F1B7A6FF3306337A42AF5074A797F6A3F8AD974D9BAF5D0E3A6BD00A79DE7A7F3A55DEF249BA6876233EBF0ACFA5B362DD3E879CD10EB7D01F4C67CF63E3BF3FC4F6DF7FC7F363BBD0457A6552D5256C9F7F82D4A605E13BD7101CBD25D6E86BEAB796F4D6E4C21412B6245AEE4D4E97FD197CBFBFC3650D9F9E41694B8BC0C40CBFBB8A614AD53D43A3237CBDE08A41F3BBFF40C21C42786C14A6F35791BC3B8A8276BEFF4DB0C710B8F285F8C68F61F3A333709DFD48E48DB17E4AF2283A78786204A1E1BB48AF4EC27F670A9DEA0ED2F313FDF1E32B213E760B96F317F95BCCFB37938BF0DDB88AD5DFFF0D9EB39FB24E4DF2D4E219AE83AE9B3FBBC8F228F3A27B781C598D1E85ADFE5970D7AD19AE97F22A3A916FE8367C336BA8089D54E97B2A57B239507359C5739F83437CE3953EA4B8BED4B7C9E565F8A697F95953B698D031E6E1FCE22BBE9E356C721BDA7FFFFF5866A50F630B3388CD09FDC1A6E736F8FC5BE13EF705D9A9EAC767EB953EA4E78BCF2E212A64A67AB57FFC0BCB119C9C55EBA5B6DB5E03BC239328998C620DB0F6ABF8D3297D4EF1CD9474A7BC83A4F806C6563448AF6FA2EE8D085D620989B52D94ED0E846EDDE27C14B73CBBBEAEEA128D601C2DB146EAE533C86F9B797E50D63CA4D7D61C56B46A1DECA7A29C6EE6BB620CF7CF40171C3E5EF355C3718E595B5CBBAB9E3FB29EBF21D623A6FEB9499B5BAD23297E6BDD6894D74A8A3CB4964A6D99F87C279D11A2BCACAF0A7994E7A633F407CD261A7E97B8EEE0DF17AD01693F7B57E851741E89CF886693EA7C94D3ACF23AA8184A207CF9829033C4EB4EAA83CF618ADF1DC9436D91CCE189695E9B2A75344261AE57C9AB9E3715EB30EBD9AFF0B0D752CBB56362DD2C7E1F659B5DAC1BBB27E757851CD4B79D7C99CFAEF2BA91CE69368ABC96ECA4527C9DDAA0E72799559D291142D51FC67EB3C66D0CF6C57EABCD720CF621BD07FA1ED3DA95EB2D16590EA52F947EA1B6CB740EB6B423E61D8DDC139190784D28D9C9E74C2FE65EF13D59D3B13F1DF91C65B674B07CF90D5C17BFE439917C9FD29A933341F199BBA8C7524888EFB272FEC7FEF1DF555D82CEF1941C01759D5670F8D92E9658DE80EBD21DE43767E117DF57DA03A3BCB1C535D48349E8FFF6014293336A3B59474CFCF60DFDB3408FFA3A75426B407A4D8B029DB3D8B620B4B082867983F3EE84D3F05DB98ABC457CDB0D5A96336B0EF0D9A498F836D2D9249E937C116474DB5C07CF93E5AED027CE721DBB7107CB53309AD1703B61BD3824E6ED3EAF1C9F4D9A9D807F741419BD0525A79F6526FD24A2E9CBD9CBA7F999E85943E37751766CC372E1267A99AC1C73AFE1CCCF2FE14F47BA049DE329273A787CBC77D4146B29B29B15EC6E04EECEB05F626C760EDD6494CF15915FD8D1D111FB600D9E3D527CDAE82C9032AE8BCE00D2E277571263947DCFBC5E983EFC18F548FF9B185DD0A0B2B5C23E722427F98E916C748E49399B94D419C4373FC075A87BDE76D3293FB5463CCD67A1B2460B3AC7FBA87436A99DCA20B5A641706282F75A49E69D4014CD808BE5243F0F7A267AD6BCDECA3E6BE443F6A0D79363514242E217C1BBB04F23F1EEFAD3D52335B1D68DC1757518E6B35FB2AD28357BFB07F6AF41FFAFB8D0F3C8C644F621F2318B4F0FB33F59DAA063FF2FCA4BFB1264630ADE994259B700DB99B3AC0B937F1BF9A1D13E1CADA3B9BE65936A173CDA3B52ED8269ED1A0C67AEA87B1464FFCAAFCFF3791BC5164872921F5ED36DE0F5B37CB7EF0F143B1DD97FF39B667CD7DD7961FE9A2772CAE64436A6A76D488AFD4AB1D3BDC85676407BF3C776ACB2DDA6DA0569FF95ED825B5AEC661262AD66788E3C7EF91E2524242424247E45A4D6B4B21F242424247E25EC750E55FB00DB2B9A27EBB9762607FB37A36884FBFC87E18929F8CE7DC65C89FB953CEF0F54ED7D5ECCAC86EC0576348241D47D3EA46727D0A9D4641F4BFC323665AB07DEB92D74BC1BC86D194FCE22064228B8C598745AF9FC0871A626E6E7555F79CAE3B93A02DF8D4BF08E4D22B1B689C4C41056FFED0F68C5C3705EB826FB5742424242E2BD04EDF5EFE6DF9FD8EE64A72B78633828C6D89FAE53ACA1E1B571FA019D8D1569BADFC9C6D4BC4A9AF2AAE5B29953E5E8FE609ACA2969A58DC174BFDE8C9AA67A9F96ED4DC9F932D97E8E9C8A6C4FB7F726E41CEC97922786EFF6DE8F78AB749E8BCE9391FD57F13FE26B83E981FB4FE77D61B9A7EB18F0717AD1FDE7B5F7C6E47C996CEFA09CF27B2421F1EE60D09F4E4242DAE924242424247EF2DA4EAC17B2C7B1C972E44BB7B1D18FD5920E21633423B1BCC2B1C9143B1DFB9AA50A62FDEB670EC9BCDEC879150E4CF6CFD958639E25E29624CECAC158751C67455C1F8C3347F5D5837EB6FD95ED6E35EFEECE2EE22B6BB07DFC29DCC353888C5FE1B8684DBFBB1F032F5F1475784FC553A3F6EADE3EFF26B54171E42806837CD7BF5DDE4BB6CD8523C89B6C486FE9915E5FC741318707B988182F7EF8EF4C33BFA3E1B3F3CC75C93E983A23EED70ACC21590DFA9823739003D37D6D98CF0E13B724D7ED0C31B7A4D21E5DA7F62A36A35A1FF9D84717D69033DBD5BCF4FB32FDF33304C66F2338B58AD4D224BAFB877DD95C0EB42B3BEC93E71C9E4464D9C09C9574BD95AA306714B5D18E05E4FB7E0FF87C28E6D4D37333711E28FFDF2F379F2ADB8F5D78D87C362F54A750E3B82974FD59715B9ECEAFC45121DEBC97721A363B2CDBD375903C8F0FF77E32C795C4BB0BE2AA24DE47E25324DE47E25B24CE47F2A7603EC914C56A732270F506FBE7D27C491C9107AD26733A2A7C8B0AC786C2FD4B1C20ED909FF93B28069CD24623DCE77DE43A06E2B029ED112F0FDD1FE4BAA4EBC43942ED0D9623D929DD88A4986753899D447A0CF137329FA6689BB83E0E5A6D353EDDC3A323E6B2A4B876720CBCFBFE74F77A8FD14D04E0BE7A09CEAFCEF4E3A9B98C482DCEB03F5DD16262BF38DBB9AFB1FDF97564E6AFA19468AA71DF82972F32DFA2EAFF79ECD3560B26119B1863CECAE4EC1CFBE4911F9EFEA333CC7B449CDC148383F7488E7DEBC83F8FFDF66391535C97149FAEEE4B707B71CDB65AEEF1A347CC5539FF9F1FA31BB1A93E7F0AAF257159EEB5F7D9D72F3C3BA9C6A75362BDC55674D84BA5E47878C7FDE90E85DE9024EED6C7CF8F71A67CB7BF3D12DFEC6E5DB52BBDB07E8AFD6BD29F3AE3A9F8E13DCFB78EECA9CCE5F614F764A7D878667C3A8A659098BC83BCCD85A2CD8A9CE634E7177159BE6A0C3C0909090969A7939090763A090909897711D55405F6AF2F223A3503EFCD09A4572610999946C16E639EC6CCA61315F332F33BD62D3A754F4B29EF1F9BE298B5A1A969E42C0E64F47A8E97DB4D47FBFC952BDA67AEAB72EE240EF27E68FF7911796F1AF793C7FB62F52E731112CF642598E078BA69831BCD589AF92415DB47627616658B59E5CBCC6EACAB31725D9F7CC0FC44BE5B9308CFCD21ADDD4451BF22EAF0737DED4C8D9F89DA6804C2CC7559B2D9504D37E598788730C87B69F8EC1A125A3DC2B3CB48AD2CF01E54FCD610F334C60C3E1417874EF9D30DDA110AE134C7ACCD2EAD61EB2F67398EAD6D6416F7821EE6BA24BE48A54DDA1F56E2EE249D5144AF7C09C3A79790DAD2A0A29953F311CF66727981E5239EF292D58B82C5CA7C924A1EF2E5CBE90D2A5F26F1542B3172C3E2F7981432D56349E6A48CCC2C203E3FC97BDB545F255BE5672AB8BCE8D57ACC75497CD2B4A72DC7868484848484C42BDAE9B46BB21F24DE69ECD624CFA9C4FB093A1FD6F4BE1B7CD81C9FF605367489DF06E8AC19C5812958CCF0DE59E1FDABA35AFF4C03ED53F9AE5D427CFA36363EFC1AB19BDFF09E5574668E63BF50EC18DABF8A8F5F57CF8BD1FED660BC178ABF52CF34D1306BD4F82CB4AF45315CDA313FB7919EBDC5E77E9533F2140F86F6F51AFE10C78051640D4D2FFC404ECAEFB83A8CF0D810C78C898E8CC072FE26C7B329986D48AE68783F2D67F3F3FE9DFFCE3C8EEAF24CFC6F014A7CBA03318643378691D62C713C358A01A7CC5D348FB593493403214E57DD6ED45D665443713EBB4871DF0663B9D19E1BC5422BBB03EA599F6622C3DCDACD6098CF60920E43F1E7F2A21D3EC74931C2331995139E63D29DFD8ADBA2F39D14F78EE451E2B795BCA11FC899D97620ABD3C33736C5BE25147F9CCE6FD25963AAB7CC71ED9A1CD72E6775CB582E1212126F15C82E96DF5847251086E15F17D867CD7AE63C5A6137B2062B8A760FDA7EB3F8D60750B2DAD8D7ADE8F4A315F272794A17F43A64F5467C7BBF8B6E24A4FABA95CD7AF6C36BF83DA83A2C27E78D8ECFB0931E403E7489F945F6C9235F383AF7FE98CF736CA1B06DE17AEB81B8C8BBCFF5564309144CFDEB546F27D13F33DCCA95D14DC5B88E763CCBBE7535A1B777E2FDFB4557489599EC8C759705FEA9359EAB2986177F33E279A4D60DA87A7DA26D3BFB1156027ECE4BF556BD01B423FD180A07FB8F84AEA2675F3EBA5EB6D9FADFAE540559ED12DA89949AB75D10DFAC8D1524B55BAABF203D5FD5EBE5EF991C873FDF9FCE3F3D8FBACF05EFF43AFBAC05864651DAECFB5726F536046F8C232874D1C8C212FBBAE5ED0E948DFABEFFA7DD8BE4C21C747FFEB3D09B17905C5A547DDDD2F34217FDE413D43D41042E7DF28373F2DCF6DD39DCABF5FDF7C8F74EE10DA333F2D1D955AE37B6B289B25ECBF556C4788ECCF5AF53BD85B57EECD6B22720E4BCC1794A8936FBD6658D2EA17307FB7641B2F76D2CF5CF4177BB287A42307CFC251EEF56D576ABD10A3C57CEF3EF95DA263FC2BACF8F8AC7C779FC934B880CF763DC7C7BF8989FCF7973083BB110BC37FB7AFBBDFB8F11BB7515E1A979356F3D9046C56542606A05FE9121EE437A3EA50F252424242424A49D4E42E2D7F5CD9790F8CD9C250EA6785F20BFED7A636D3CA2F39AC77BC11212AFC39F8EF6D60CFFFC18A90D3D4CE787111A3D07E7971790D32CC137741BDEA93584AF5D446C498BFD6A9FABCA787E129EC9156CFCD77F2165B0A1173020387A4BB539F48AFDBA8F1E3FC1FFF3BF3F45341487C7AAC7E51B13306D58B032791BE7447A6DF616C6A757F0C70FCFE1D6F005FCAFFFF99FF01836A199BC8362A908B7BF80C9E9094CDF19C527FFFC0CD72727E4BB93F8819DEE09EF636D62B79464CE90B2CD8E763A8E7BC9309F09270E14B2B1C5D774EABE2ED9E1284DF6AF5EAD267E0F45B6D93D6BEFCC2BF2265369462A5382CBE18566710A31E25069B5B0B2B20C8FDD856C260397C8DB133A4EF9784F977E03769B0B36713D9FCFC0699771CB252424242424DE16C4A6C6653F48C8BD350989B7E44C7BC3ED82EFEA08F357565C6EB462713EB348E722E91A9D63AC7ABCB85FEBC7B1251E4ADA7BC8691606D671273EC1FBF51D34C3493463313E0BA3F065D239CE463CCDEB4585BF522947E77F5A010F5AA93CB7477CB2BD7C1E559B91DBDBAF379993B39D2DB37C2D51B772BE93DA93EFF23DB4D31DF35ED68BFBA8474270DE18C1F6475FC0746518F9F565641727109A5A84FDD235E6A9748FCCA2A4EDFBCF07E796905A5F87EDC24DEC67033FD88B30FDF32F682472707EF90F648D6664D774CC9799D6DBE1BD3986F0E890CA5F49E78F790C3F7A82F5DFFD0165EB166AB1084CE786D10E3AE0FC6608CE4BDFA06CD9624ECEECA609BEC92558CF5EC2F79DFEB965E357D770BF9C96EFF53D83C27BB9BFFF48CCBD2E7C7FD4E7B13E10F3E1B7E5FE78DC6B9CE6B456382BE94CFB8BEACE9BBDF8B6DB4341D7E78350F8323BD9ECABC9F614EFE5CB500F67E4B97609891F3B07089D46FAEABD1D76BA4AB683E4EC18DCB7C6919A117F87C7119E5E84FFD297AABF9D62DBA8A7F3F09D3F8BF0C232C2336B6CA7CB6D6AD92F4EF3BBFF402FE653F316DC71042F9D157AC71A725BEB48CECF32D771DD1360BD366DB4A168D88263745AFCBF85463080ED7F5D147A4D80F3F2BA53E40F8E0CF175D2594877A67291B52DF86EDC12CF50629DD8787E04C9C95B707EF5A9EAD7171EBBC979D39BDBD8FEE35F841EA3E3F6A8DCC376A97F2EDE1C4135D941C53085D8DC2A0A5B5B68478E75A3D61ECBAFC8D93FEBBC8882761EABBFFF1BECE787101BA7BD9D43CE4B6DF0B33ABC6A1BF7C4F7A464B19DE8585F4A9DE74DD8E9F60E1F233E3525D64F62FD964DB3CF1AADC1141FB9415D97C6606E7999FDD7EA6E3BDBE9F262CD46EB35C5BF4DC94BBE7589D91914EC4EB482512467A6D012BA44FEF8BC5C239E45D9A447518CE9FD4C9F8BBD1A166BB5A09BF32A3644B2FF29D7A96EA55C78750B0F2A393C68D5D029D7500B86119B985465BE97CE71DE56C887E4B69D7D5506CB29BF917AA2C0FE7DE4DB31F8CC0492BF114F7239C5FF43F101A4F529C55650F2521BFCACA23D6AA32564A6676D44A26A9E822328751E0909891FEA75950EEA3E9FEA2B560F84F85B4CFE6DE4FF55757B399E1CF9D6E53636C437DFFDCCFDB4D4DC34CADE209AC1E029DF3AF267A23D36F2A7A3D87275AF5B8D1D47F1E9943AD86FF9EE34C73CAAB85D623DB98383DD23317F6EA8F33AB521DF99840285F792F483D57FFB03EAB108320633727A07FBD7EF1713A8FA23ECE7DEF03B980333AFB7A2B0B9F8CCB33DE62F2F23B5EE60DE4BE2A72C5B9D28D91CC819B770D03D42D5A613BF9716BA9984CA33D90CB8D4BD35FED6FAE2A8E857119DBD838257E8925A0D34FFE71FAA5E416DC877272121F19B3CFBEE72F25E51CDE3116B9514DC9746787F81EC6314B34E891747E9CE40DCCD415DA26C143A03C59E137A43AF54E4B3F4B466A2D870BBF93C0E5A0D2ECFF5883C64F3237B37D9EC282FE91205A3997589BD5A99D3DF765ABC6E229B5D2B99C177BB6D9693FCD9297E2DF9D5532C47E2D7DE6FB5556E6389F7CB37BF5BDDC741398292D90CE795BB700D5D46E476DF375FE18F22BF748A751B9A9A613FFDEF0FDB3FD025284FAF7508F387FF0DE797D7F06DBD3FBE7D438BC8E837E1F8F23CD28E1062E337394FCDE543D16247706643CD5BF644702FEA51D33B610F4C17863896ED6E2A84822B88C3FD23A41617D47D8507392FD7E39F59655F79F96EDFCF333F747681E2C43E9D87D651948FE6BA97D5477325D9E6682EA4B957B1FBF1BC1B89A0E274F2DC4BF140294F4BCC9DBD72E5545ED28D15CE1025CDBC7F03EDEC77BAA7BE050F7BBB3C1F2B314525247E0CE89C0E8D41F90D97F83571BF7788DCD23C7352365DDBCC6599DD76AA5C9683763ADAE3276E49EFFCB2984F731CD785F411E6E5595CC5BD441819DD1AF34CEE767651DBD631AFE57E29CD732A7156966315D9EF12AFD54E476B29EFCD61541C4ED52F8E748867D9E9DA852A734BC6E62650B6AC233CB78AEFF67AAA4F5E379541CD6165FB5DA75044231846D57BC24FC99C958582EC7F090909090909E94F2721212121F19A40E77BC8378DD66D6CAF4BA6F87F5AD3919D4ED977A53D64B28D29BE70399D1979EDAC6A3723BF37DAD36DB86DBC8EA37AC9BE47BC2B1D91A79B95FC54126FC69FEEE0F0110C67AE20B56184F9EC3518CE7E81D08DAB7C06BE198B9CD8929D0EA4B426D517CE796B0EFEE16FE0FFEA0BA49796D8EF2DBABC01EFB9CF60BB708379AD6A6E33A2334B484DCD2072F786EC778937E24F47E9F49AE107BE73849A27A2E6A905A2A83A4DAF54B752D783DD5DD9D7121212122FF1A793907857915AD3CA7E90909090F895B0D73954799E2424DE55E4CD568457CDE884CCB0DD1846351C467A799ED3AD6C99D3743F6736F079F9C134E555CA150CC653E5E8FE603ABC6A50D34A1B8369AA57A943914729A7B431987E9D72BE4CB69F23A722DBE9F6DE8C9C83FDA2D49B5E5EFECD8FE1877B47383A3AC2934787EA7978FA7B2A7DF458BD3F98E63A5E54EEE93A06CEDCBFE8FEF3DA7BBAEDD726E7CB647B57E51CAC5742424242424242424242424242424242424242E229903F7DC317947D21F1CE82782FF75ABBE826A57F85848484C4DB00E2A4ACF823CC3D45B10C88D39278D288E7847CE8C8B7EEC16E4FE5FC9190785BFCE9545FFD0D33DC63A388CCAC703CB98ACD80F0DC32DC976FB00F9DF7F6229A5EFB29AE4B09895F134F9F09212E35E2A4A434F157F119CD5A5DF695848484C41BC6FD9D7DA4350B48AD1B517606A0FFDB07884C4D21BF368B8CDE82D0E43CEC1FFF1DB1C915E4B7B7557D98627FC6A66639B6577A768CB9275AF912B2BA7578CE9EC1C3478F98CFDDF6F945713D87C2D63A72EE241A2E0B0A868D131D66452BAE47703FE9661D9CCEE767B54B486E99B0974FF235CA732F5B44625972644B9C40E1BD246ED6ECFA3ADA41373AE90CC7997B70CC9B1D177A31C59421AE13E2B2AED9ACA7F4618AC3D64BA550B218FABA47FB9063CB51ACB66F8F6309526CB91D7FA81F9FAED6C47E2A8AB27E0527F1E71CE27A87AF737C9947871C674E89F546ED511ECA9FB6FBE5BB939090909090784B20792F25242424DE12DF50B1A623CECA6EA586BDDA0EC79953626C14CD2EDCCB64784D47718F0E5A353C68B5D14C66990F93F62228F6763B2563C14BFC7A763A1AAB358F1B8ED925C4AE5C3DC5759937DAD08EFAF89AE9DC303C576F2170E3121C97AE23BF36C779D27A3B72BA45D9A712BF3814DECB07621E4ECC2E20A75944C5614672C3A4C689A98513A8B83C688743CFADA793CDCAFE94F8C571D83B94FD20F14E83CE43741261EC757A92B34AE29DC54E2485D4B617BDB84FF6878484848484848484848484848484848484C433F0FF03FACECA3C
-SmallImageOriginalSize=63600
-SmallImageWidth=106
-SmallImageHeight=150
-SmallImage=78DAED7DF7575B59D2EDFEF7DF5AF3BEF9D69B9EEE9E6927DA0603268B2821818408222AE79C739650C27E5525240B1018B743E3EEFB432D09E99E7BC4BD67DF4ABBEA7CF8F0011F14514411451451441145BE50E2A188721D7E00B9BC6CD3EBD5BDDF178A651472D907CFD17BFF01019F4FB99EDF50F64FAD78FED32F383A38C2F4C232D4AA95FEE74767383B3E41C8EB41289EC1866A19D3EF96A0DFD1E0E0F00853CF5E62EFC088D9A9B778FE6C02DDAB0F38341AD1697791737BD1CCE750CB55E0576FC1AFD5C1B5B888E8D1013C8BF378DF69C0B9B004E7F212C2865D5827A7D06AB6E1DB5023A4DD46FCD008F7A61611FD362E5E4FA312702172708C9CCB09F7CA32CE9E4FC0BBBE8E4EB3F1B7BB5FAD566BF8BED9B9C2F9D929D2A91432C9B87CD6ED766EBCB28442A11BE7187CD76936457ADD2B14FD7D9C752E9B378E6DD7EA373EBF224C76EA35F47AEFD16B34D0AA54D1EB7C9CAB59AAA21A8BFD6DF1542F5650F07B5089C7C64A31F6F17D2110FCF87E3026167E780CDDA7DB63C78DF91AF30DE6FA9CF9C68D19CC550C069F0E8E1A2D34F259348BC56B298CBC2FD2B3EBE3DFD5747EF87E30A69EC9DD193B3A869F7FB7C78E1BF3C7E6BB35269F1B3BF6E398C29DB1E3C60CE6EA8AEE7E1AF729E70D21B4A345707B070ED219FCFCCFB95C68949B70AEA870F66A02499309A15D3D3C6BAB485E58103D3020A837C2BBA58367FE8DA2E7BF8334C89E2B06FC377446B358EA638D7404BF561349D115AC6F3A8D9ABC7EB8EA2AD7EF3B4A299642391A56F4D318FDC4F294EE552D9B53F4D318FDC4A2605911451451E4694BA15946F5B234FC3B500AA3D7BBE95F5CF63A4855E3CAF5FA06B2E6D9C6B27D0573F639E8437B388C98A072AF43E59843B651C26E488F2D8F1AD16200BE420407D113D863A7E8F65AB0675CD872AD4117D8C145CA8A9D800EA54E17ABCE05EC06F5743E03169CAB3006B4300677A10BEEE0C3FBCE9DDF506E5EE2307E0AB57B95E63F44AA74330E500C4544F8BD5F6B80E5F7095CBC7987A06E4BE289AE9535F836D5F0AEAAC446CBF9C270AD6DC24F3EDE55A320B1C4C0F636F986ABF0AA35702D2EC9389F468FB3DF9EC1BF4D7EE0CA02126717086875A8252270AF6964BC7DEA95CC6B9B5F83E3DD0C7C6A1DA2A61384741A396740AD96E3BFF57DAA5C56506BF5636C995A06ED118C5CF6BAB0A7AD747F82081402B0D0BD08D0FB60C10F6FDE4B9F87E0CF3AE0A7BFCD6917F6825A34698C336347B01844B414A17B694798EEB133E38127E7A6F3F6EEFC86CED57BE46B295C76BBF41BD26875EA37E3F1BDF7FD7861EBF2662C85FC3B8E0BA62EAC12E3C9D8ED7DFBAD4CFF53227E2796383AEE4ECCFF1E9FB055A9DF3DF63AEE381A7F7CCA78DAA3B5AFF1ABB149DF1BC37A399F297641639790AC3CDEF718C5D349FC04E972F8B3F0645F5C4764578B907E178EA555642D674898697DEC19092B3B38FDF917B9A69E35159276274EFEFB1CE6D79330BF7A49187987B0818EDBDC40905ECB613FF99309E4BC1E3856B6E09A798388D18846A989C8D1317CDB5AE49D66641D0E14A229B1F9CBD1A78DA700096329554DC199F5C09DF721568EC197A7CF08178546F651BF61144F91520897EDDAA3F1347A4CAB5C1A895B5E4AFCFD869F984A13E61C37E3F6B4462A8924F25E1F6132841ECDD3EDF450249FB755290D63FAEFE935EF0B22E776D37932A827E368D5AA22ED72E187C2133FF3D6BD5A18FCAB748F32740FA3D8F26A60A231F97AFA5178DA0FEFA37E997F349E5A8D36AC3373A29F58D778B7B6619F9DC3E13FFF17DD6A5EF25641CDB68CBBA2DFCC3A2A6D232CF83C68B57A702D2C882E732DD039D45B742E3AAF7A43F410E7C9185B7EED0EE9B865A41C2E3866DF21797682C8F119BD9F857783C62E2FA31CA2B5ABD1C23AF91AEFC99E72D23C49AB0DB6A9D738FAE5252C6FA686D80DE9F5F06D6D21B2B7FBF87C6EE712CD4E3FF754209D3B8A27CED3323E52B52CA2F4EAC97B90A82611A7671AE3295189D2F751949A25844A31C1029F83B114A6F711D24F8CB55C2347F643F713B82EA34BF365EBD93B76A4E4A7C83E61B981C34673FCFF54A9A1D7EE63AF556F0AAEAEAE3EA059C8F53FAB564506B9B23B3AA95ABDA38B463F177C73AE6C2417C7BFA5DBBC1CC99795500AF7D756A7D546EFB2213A903F675CF3B3B212231DFABEF7A8FBB4E85CC7827549F0A425BB6D144F896A0ECBCE45CCDB16E0CFB9604B7BC96633E23C64143CA9FD3B58230C2C3956A0F66D089E66EDABD8704C215E269B291F21ACAD13468CF4F90AF2D5F13A2B4FFFA3216CC09A7399E6DF43B39DBBF97D204CCF1CBFACD3513CF9D5EB63F1E4DFD880E9DFBF0A9EC28727F02CCE1186EC08EDEDC9F9DCEB5A440C7AB2D974C8C7F368A5C3889D9AE1267B3148FAE7929E6391E30BB8541B70CEBC169CD9175570CDCF4A4E99CF1139B1C036338FD0FE2192662B7D4FF839DA937C43707717E6C969C14F8F9EA1B6F939E46C67C878FC70ADABE15E5EC1E97F7E166C5BDECEC031374FF8D2A092AB7F773C552E8BA8B59BF4BCA3E75F318C1CE9BE4EAFFD493CE51AF9B17C8DCFC1D3D83CDB0846EAD98F73B0DEB96A7748CFD451CB6424A6D7AE963F89B501CE3A23FC92E17783BCF6F5EF1BE08C71D5C8E549B277F0CF38EBB6BB7F8A7EFA23F69E89B097ABA51FAF9FEA9D6B9D618283D629EB89728E747B3E01EFCE016207BB88EDF771E4D3ECC0AF51C33CB32418F111EEECF34B74ECD3F7CDFFA8BDC7F74947BEAC37EB141DC4DF5FF1F3A01C17DBDA95B13CFA378CDA7B517A5E7EA9BDD7A635CE1C8B5A2A8B12E900B6E5AEDACD6B5FEAE6B907C7FEC8F188F6D515760346D89266C4C96F1DE0C910D8C5B67753F4BD256E81C6BD85D39805C69001DB415AB39913D24D7EAC3A37B0EE59A33934741F929FC6936F13BB5E1D724AECE9B3F0546937604D5D903E4AC14FBED1473C85E4FAF37DF2E57CF21DBF32EECC291BAC49138ACD2202ACB3E879192B85E5EF4FE1899F9B6EC2E76D3C29F2B9780A421F34483C2F5F4F41E5D163D3B54838D2C3950D6087B0E44C91BF528C41EBD7C199B6E320748083B819957AE29378D2FBB670423AEFB67E52E4F1782A36B248D672740F4270641CE8749B64E325082B0184E8334BDA4158F3D3354EA0D02CD07111B2071334DE4A76A217B59158FB7D786AD1BAC890AE53F0A4C8DF4DC6E59F14F973F45395F4BADABDD9CF2591EE5977AD603F6A86D6BB8112E910F69FB4E43FB9339E2FFA0D03FDB4E150E1347AF0A0FF143399E0DDD4C0B6A042CE7A2AF172F78606CEF979E49C1624CC3604341A98DFCE216CD0C3B6B2855E252B7E9779E225C27A23A2C767121F8F1D9FC3BDB88062C0F743EB27B6BFAC298BE492FC05B2E7C8AE0BE43DA4A732B0925FC5F1722FD9DF3ED24B9F8ADF3DC67FE2D728E1F421FFA9188E226BB723E3F6A21C0848FE297F1DCB19976BE2D8F76DFFE8CFC81FFD9978621CB1EDC736E0D7C293336D41B35DF8EA780A1B4D12C7F0AB351257632CF97564B7D27DFFD1EDBD87F0546F95112CC5C96F7288BDF725BF61144F613957EF9BE2E947C3D2800F5BF079FB31E08303D8E69771F6E225CE7FFBAFAC4DEF32F951CD16C2472604363671D56E21EDF0C0A35A816D7601BE8D15A9453A9F788DD4C599BC772D2D217A7008DFFAA6ACF142384E9F2DC33AF916E7AF5EC136F14CE26B8E451EBBAAD8098F8D25D71B12F32D471237F4CC8067CE39CFB4D52AB9856EA37EA79669DC1A7DCC7AED730FAE947BA088C2DF53FCA7EF2A0FE5731BDD36569D5B30C7CF10211B82FDA5EDA0119B5E35CAB5042E924E389266BC3E7B8319E72AF6433A385336B203DD285D56610A19B11730E0287C8864F98FD73EDCC8E76E6B4407B65A57A4E3D4881AB470AF6D906D61153FA890CC2371720CE7F41B985F4D20407AD0BBB22439563E57CA6296F16C5FB8549BC2A3F06F91AE9C5B4650A7856B4585E317AFD1293CAD18E343F95CBE4FC18217A95A8EECC282D879894A0C69B2CD38AF1F2EC725B7CBE362E50832F53CBDC691E5581DD98ACD4E13F946AE9FABEDB5BEE8778ECBE77EE4DE752457CA9C05E64370BEF4B67E1CE4581FD29B1F8FE991BDA43C2B3E5746FDA728D9A4D6C969E1D4B14DEED3EAE05D5B178E6AF2D8884228467E9301E5A05FE20E3EAD1EE667BF88BD9275B9C477B2BE5BC5C58B1770CCCEC0F16E1AD558087ECD0E2CD3B3E4872DC0363925F6A9F9F7295C3CFBB5CFA9A071298B05672FDF20AAD7A29A6FC0B7B6285CA5F0AE0E97C50C7C1A1D61F948EA3159F87EBB09CB5CCF5FCD5570FEE2395CF3EFC86FDB9539334E9770701D3457F2C4847222F3D5F5D38DDE11856F1B7719F59F0636E9C0E66C37FB7CA28F7C858FB628BF1FCDDF0EECD71BBEDBE5E3391637ECD91E3D8B8AB93BE7E063789EA1AD5CABDF3BE7280777DC6FFBA3F92743EC0CE7D15318FC5A9CC52FA00BEE411FD4CA798C34D69375C11032C19E3C42A6514220EBF8EA78E25884F5CD24ACB34B70CECDC2B7A5EEBF9F5F123C858F6DB0CF4CE1F0FFFE83D6BB0A41B50696B76F45B745F60FA40E996312032C5AA6A7853F1BBBB0090F9D3975E1FD6358A7DF91BFB8267388DDB4C3F5C99BB878398190610F5EFACEF2E62D3CEB5B489A1D387DFE4A8EEFD4AB7D3EBB562DF3B19CBF7A83D4F1A170C3BE473ED7967522568AC297F742E5DD842B6541A8D8AFEDE59804738F981F9BA946853B546D16BF3A9E8AC1F01FF6B9AA89D48DB18CC5F7DDCB1B7C8BFB78E60FE2EED6F1030CF17C5CDBFC357CC4CFC1D349D22AB6DF59C242FF4F031ABF1E86E0368CE1BD2F8AF18DC6F70EC3863BCFD7513C31EFDBA55A93D74EAB2771EF90F188D6F5266CA45F181B697710B619D23D8BB4AE375438FBEF6F64E3AD899DF777C8E7A66A79844817B1FD576E16863C23962F89F18DC6F7428520CD95BB174F395F0839A71D9578E241BD33C447E3AFD15B47E9C7F263F463917E42ED163DC7BA9F944EABF3F1EF7BC634B2994F8F7DA43C66BE478DFDDC31D7733D253CA51D2E98C9B6C9389DC2E1E5DA06F6DD5DE42F7834DCE76B1921ED1612E71708EEEC4ABD9D977402C7CBB9B628693AFCC8539D7809DFFA2A02FA7DB8D7D5A43B54C2F9E69A22B6A7CE5FFE0E3FD9601C57E77839C70678AEF0C189E48242DB6A84F57B8ACF38469AA50A8A81006AC9FEF39EF9CF43BF7CA41E816301837A87D1CF4779DBA33E04DBBDEFBB9D3B7C708E17B44AC5E1717CAE1F2D17A4F46351FAB128FD58947E2C8A28A288228A28F22DF2B9C7112354AE55A8FD5A58121758F768F1EAE425F6436AE49A55EC84F6B0E55161DEB1026FC6014BCA820DAF068D5601EBAE359C27CE956BF91DF2B937627AADCA75CFE5F1F1618E838FF64BB9EF3845BE3E1F76144FF6944DF0F4FAECF5104F5C4338C05320E7927AB565E70A0C213DE66C3352F7C463175D5BD8F26EE022760467DA8193F8395215A536F06BC5CB47F1546CF639C3B5D6C73CE8E5688EA6D7233CF56310DD5E676C7EF7EAAA23E347C729A288228A3CA5FC53CE6153AEC553E796375A7FCBFD447E443C751B95616C38E78FC0B3A242D26A47C87800E7DC221227FBA865B268950B889FD910DDDF43605B03C7F2BAF4100AEDE891F378508E46D1ACB5A5DE83FB0D399756A4EE837BA4A46C4EE19DF21E0265AF55387847FF7901CBF3FF489E2BB0B926FDBB1CF34BC2C7732E2CF4B90E0EAFCCE75854217460827BF6B58C656E5CF4F41CB13D2DCAE90292A67D647D6138979711A6DF1D35E810DEE73C9806578DA27023C246A3F0F0DC9B3A1CFFFC1F381717607EFEDB904F173B31CBDE08DC9F2FE7B40A078FF9A4030E1EE76A2C33F3F27F39A626619E5940F2C800DBC292F4D2B4D3B5B2FEFE52782BDEF54DA42C1708ED1911D0A887BF516A60E83BF39B295867E7E0DBD844A75A844FB32B9CC087F0D46B35D02C96E5FC9C23CAF9FCA8D0352F0423288542A8A7D3725D6AE9F19C847ABE201CD4F61FE4227C8A4337F86D9F53C334C88B8DF2F706F3DC9E6FF4EFC1F1F771F06E8FBDCD1B1CAD41E1EF6E7308EFF4D61CED4DD67B80EB93CCA15DCA21EBF2C8F9336E3F2C13BF237E6E8147AD818DD62EAFCD72224DF7223DC4936F737388A7C4F919427AA3F40E2A8583C2EB0C198C848979E18E160211D867E7D1AD57103A32C3B33025B9DC8070E9B624F75FE3BE83F50EDCABEB245B70BC9BA375B88580E110AEF9399C3E7F8EE81EF7ADDB806B6955B846C1ED2D78363470AF6DD27A5E877D7A5A3875C2C7236C7809A7CE77B348332E6D76C103CFC7F386F5BBA8141BB0104EF8F862280C2B638570FC14F9E57C8D987F36E003F01AA8E70A92DFAD6572A82693C3BE41837CEE9D75C0FDB62A15E979C5EFC7C631DA5DB44A85CFAB8FAAD66EE068DC985EF7FEF30CFA7D8DF6DB1B1DC7CF88F1BCD7A7C72F1FE8A7D88915A1DD6D7996F2B39839A3BC678D6B7949B8DB6ED50A2E265E0A96FC5A3D4E78CD95B3A40FD4642F9ED3B37F9FF4CA867029AA851ABCCB2BD2F791F9D7CCD92E05438A3DF085F61EEBA772244EEBAF7EA79FD6E8BE66FC6C1DE88A41DD6B299640C1EB11DE7731E0955E8DF7F56C55E4CBF1C4FD4CBD6BAA618D90F418263C59DFBE8577634BF8DB45AF6368B7B9556BF46C6888EDC23D20BD1A03C2BA6D341A3D58DF4C90FDB62EF652391244D2E1837F43257B4771FD04DB5F61D15F4B34D799CCC57D29B91F9E8D6C26FF961ABEDD7DD18B5C8FE4931EAC2B08EE1D104E17A56E9D8F77D26FF0AEAED2778BC8383CF41B1785DB54C9D710D26DC977DD7AE92F85A71B38B8B653EEEBF57D9F8D76D376792FF6D2004F83BDA30678E51EC78CCFD1B96EDB5CA3E77BC826E4DF38DA7BB2D56CA1E8277B261EA7FFADA5F84FD7F65ECC748C7A3627FE53956C28DFCA02A2C717A4EBD6A4B743FC681FE72F5EA01A0E900F7402D3FFFC9374E024616B17EEC5790477F5C37E0EBC2F28E3967D2117F9375C7F9F38324A1D37FB32CCFBE39A0BC620CFE5552D4B4D7EF8E81CE6DF7F173BD1CF1C443A17D76A9CBF9DC7D9BFFE57B8E6FCBC1ED898036E3AEF21677FFB86FE9755D2BF137D5FCF6285DF7084C8AE06E6572F70F6DB0BA9B9E07EB2ECE378C90E3DFEE95F321FEBDE6626FEDDF0F425FE53259E94DEC2ED7AADAFB7D8676875863D243F65DB3156C61DF3D197290B57E8F698C15C776C4BC26E239D7A546DFDED7947F5F1380CB38F33F8BF7E343C712C622055DEDFC21F92F5CE982AB8CE91F506C55F613B317572286B98EB27A44E8F630FA41B796DB33EE3BEE2EC6FF1BE155C8B1BD8DDA56B9E94DEE096C919998FFB4EF0FA8E1D1C484CC23635051BE9D1B8E9E0463DE1E818C1E0FE81CCC9F18FA39F5F905F3623FE1DFB4EDC4FDC4A3E5E84FE3E7B3129FB70D867DE5EC7173E90DF772AB5C0D17DC271BA80A0611F69FA5F18F7A363CCCF7E1E623769360B76B9AEF1A9F84FA3C2FD8519035DD20DCC89653E7435959179785CA77179636D0F744BB3544625121EEB3F8DF606EF8FE7BEC937EB70F95930EA4F8D8E19EDB3FC90CF75BBFE6930D7B02752B7F3C831570F8EF9ECDAA3AF148F602EA9F0CCB7B6C51E3B7D3181C81ED980B40E43848B8B571368E652F2ECF7AEF57BB0047406E945E459DF20BC1964DD995FBEA2BFD51297607D51247C252D0EFA6C1DBD7AF5BA9FBF9D7CBA0BB11D63BB9B284653B0BF7B07FBEC74BF3FFFFC3BC146F2EC08E10393F42FE7F8D98F6C477C4D3C8DE55F54EBD26BE7537188DBD8B80F23F7C517C6ADDBBF126F7DA09FC2C643B25FDED0F37443E2118EA575D119AC2F4AF10C025A2D025BEB52C7E1267F856BBCD9CFE2781BEFB7CEF79A7540E2D88462244A3AE2807046FED2BA8AB0C1BAC72658F4EAF6903E354ACC9B75543D9755FCD8CFB0F74AD138ADFBCB31B1EAD23D7189D2D8F5CAF5A8CD4AED9A479F90FD61AAA9145A85C227EBFF14F9049E9A75E55AFC00787A7FA5D41FFD28F54F5C7B22BD84C271B2B99EE1E2CDBCF42C615F7FA06FE2467D3F27AA5A251C5695EBF727D43FB56A956B1F7C8C8EBAD637A54048F6AAE07D8B7A4D859BA7D4BB2BF5EEDFBADEFD9BD49F2BF5EE128FE834957D127E947884722D7E8C7804F70BE2DC4E40BB23716BDBC22A9C2B2AB1F738E712D46EC2BDBA82C8BE49F22DBC8F66CA7C41C73A24B630880F339F6E70BC676353E2D1DC6F68FF1FFFC0C92FBF22693AA271E712DB635E1CC7D507FD2378ACC2F97C381E31AE5FD02097CB39178EA7DDE81757AA4A1F88D1D8C2303E7C7DFCFBEEF8F8C68D18F73DB92745C6E329727406EBEB0989B931A6B8AF9C43B50DDBD42412C7FBD28F9C63D5BC9739F32AF97E05F4C7303FFB953E5F919C10E76825E759AC116E4CD2B395F94683FDA1E34726C9B1728FBA717DBF38E7C57B77327F2F797C245C8C7A2AA5DCA7113C15FCA13B7BB94ABF94EBFCE5B8355F49930D522B8FCD97729C8F7BB60E62EDBC3FF4287F6FD8F72B1A55E27E4A7C4F89EF29F2DDFD27CEE7DA66E7854B609B9E24DDB426BC1CF79A5AEC3DD9733B9F953D9B994BC7BD521D4B6B88EC6C23717EDA7F06C6FA9C9B20E74F1766510CF8E9B958223B4E87887E17AE65151C0B8B92FFE5DE64BC1F07F79F4CDB2C30FC9FFF27B513D6E969A9CBF0734F32FE0D9A4DE947CC3DCAEAC59AE23F914DC0DC70FE5BB80CF1F8D8FC28EFD9DC2CE4510A4725A7D4251BFA761EB7188CA01C8B0DF75C2EC79337F2B9124F4CA7EFED37C65CFD21FFFB9E5EAD8A7E5244D14F8A7CBD7844BF56833F3F79F60A9EB5759CFCF20BF6FEE75F88EFEBE15E5A104E2BF7B1E75EDEEF3B7D7EB95FBB8BD4F9B1C416B85EF0F8A79F64DF27F6A3FCABABF06D6A84F7CDFB468DF6E767DE5ED26A93FA3DF3EB49985FBD94BABCD4A9898E0F28F7678CFFC4FECC653EF3705CFDBA5E709CDE18F0C46F7348FBFDBB3FC61E46EB4198D3CEFC89DBF3F4F9174AEFBB7178E27D2B9C6B5B1283B3BC7C06EF2673B475528F3AE09A728F57F3EB29C107D7F2454CA738FBF5D721B795B943CD6A9330B132ACD5602EACE5ED2CEC33EF10D6EFDC19C375B31C17E4DEFC51C38ED4B1163D0E94B365B85754489B4FC40EE17D06B9BFBF6D7292EC3F0DA2A716B1450735BDA3FB13BA9656240622B58B8B64C7BE7A211CD5CE0FAC873FD63F25C6EED979BB6E6318F37B20265789A76ED46A0CC774AFEEA9DFEB0CF7C918C626CA55BA4716C9DDF11E6EB779E2F7C52EC6ED67F110BF5CB1F714F956F9A72EF942CD42119D9AC25179AAF188804607AF4603DBF40C9CB33343FDC4751639AF1FB6851578961784DBDD6B5F0E79AC2B2B2B38D83FC48E6E073353D350ADAB30F5E2395E4C4CE2C868808B8E773A3D585C5AC234D992F5A2C27FFD123C35F2C53BF1F2DB3109D62FAD72F9DEE77CB954BEF94C6DB608A32DE53A2BFA49894728F234FB479C9EE1F8D7DFE0247F63D00388EB3782BA2DA90F74AE6D4AEDEA20971B3D3A91DA0BCFC25B8943702C83EB35389FCBBA8B759A7F7B1B1EB50E1E958A7C9C05F1954206BDD423F1DC7C0EE51E7C9EFF540CC7646FB881AF33EA378DF349EAB9E2752EE3EA4E9CE1B1FD23F81CCA3DF87C7E847B695EB03188F1312E6AE51A42E4FF870F4FA5169DFB39A4CF4F0453F1930BC40E0FE9F54CEACCF8BE254F4E10DAD50B9EA2FBFB28050328E7AA8891EDC77D40524E1F223BBB74EE0C82644BC64DC752A39DB23BE85C2604D4DB723ECEAD941345A4AC66A9B7CDD9ADF29B628747F4FDB9702A38A7B5FFCF7F23B4B5887AA182D08E4EC696A231F291CD7F29CCDEE647DC8ECF713EAAE00BA3964ADCF9AE96CBA31C09492EAA4478E4F1FCBE9248886D58A5D77A268DF6659BC6A7C42FE3BD302AB1FE1E769784D501CFA94BB6A19C87AEB1D44B958BD7358CC55BB18E247D9F1C5B235B0CF57F4B85EE712512F94B61768027DE47D3F26652EA64B94E907514F77470CCBE93B819E774F9B8A4D58998C984A37FFF9774D10EE28706D13B83FE5FCCC1631CF2FA4E9C9ED2FA66BE9E1DD55858C62A79BF2FF39F78ED0F621297D7BCA0B1FDB93AE46BD11A1FEC313AE4EC8D399673C497A4DB041F74CE5E47B9475F1A8F889F9CC2BDBA49987A2DF18838F78A3C35E3ECE584F44918E029E70B207260C2F9C4248DCB90BE5A838D30C7FC0AC7FC1C7C3A23C2EA4D54B365642E4E91B63B0967DB304FCD925EEBEF53DB4C45873DFB023ABD721F3E2B1E51B8B1FF19E3E33677817911CC6DA867FA3603DB875CD7CBFA8079138C1FAE8FAF5FEB0FE9C7477A835FDBD5F2B087C3FB6E7BD8B34FB9079FE93F91CE611DC379A3517BAF4DFA3D7C6422DBED00ED7C0219A717C9B363E10545C956E3FEAF9CD7F1EF29BED0F7F19FA2E2EBDCCEEBB49B97D2038A317399CF4B5EA814BABB27F438FF491125BEA7C4F71479EAFD2C99A3609B7A2DFA89F514F7224F1C1F4A6FACE39F7E866B6111DE0D0D5CABEBC20B4A9E9A10245B8EEBA6946BF9FDFA598EC61B067A8AF7D6FD9C9E798A28F5B98AFFA4C4097E947E2C4AFF88F1FB51F3D8A7D48F45D98F7AFC7ED4837E428A28A288228A28A2C8F87884B23FA1E23F29F275F3B9FC9E73B2BCFF53606717F68515440C7A04B53AA97557AED5D3C1D3A0E69D39E5A3FBBF28F274E2E519871D7EAD01E6899737F8B081ED2DC1532D578257AD43351A40211485775D8D76B538E4D3E53C2E79CFF73D6DB709478BF746E1BD6372DE0032762BF2FE207A8DB272DDBF205ECEFBA28DEEC372BB8E90AF7F239F979A3FEE175B8A8469DCE5904FC7F1F5CA75DF897ABE28B961EE8DC4BD3B998BC7FB6D5C72CF3105A74A3E57C9E72AF284FA470CFAE131573962300EFBE1F1DED2915D2D52561BAAF18872DDFEE4FE11A3FDF0CA91C85DEE91C229FAD3F34FCAB578FAD2BD547AFB2BA288228A28F2E7CBFF07281CF4A5
-
diff --git a/FanBoard/FanControlBoard/src/asf.h b/FanBoard/FanControlBoard/src/asf.h
deleted file mode 100644
index fbcf5ba..0000000
--- a/FanBoard/FanControlBoard/src/asf.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * \file
- *
- * \brief Autogenerated API include file for the Atmel Software Framework (ASF)
- *
- * Copyright (c) 2012 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * 3. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * \asf_license_stop
- *
- */
-
-#ifndef ASF_H
-#define ASF_H
-
-/*
- * This file includes all API header files for the selected drivers from ASF.
- * Note: There might be duplicate includes required by more than one driver.
- *
- * The file is automatically generated and will be re-written when
- * running the ASF driver selector tool. Any changes will be discarded.
- */
-
-// From module: Common build items for user board support templates
-#include <user_board.h>
-
-// From module: Generic board support
-#include <board.h>
-
-// From module: Interrupt management - megaAVR and tinyAVR implementation
-#include <interrupt.h>
-
-// From module: MEGA compiler driver
-#include <compiler.h>
-#include <status_codes.h>
-
-// From module: Part identification macros
-#include <parts.h>
-
-#endif // ASF_H
diff --git a/FanBoard/FanControlBoard/src/config/conf_board.h b/FanBoard/FanControlBoard/src/config/conf_board.h
deleted file mode 100644
index 3275aab..0000000
--- a/FanBoard/FanControlBoard/src/config/conf_board.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \file
- *
- * \brief User board configuration template
- *
- */
-
-#ifndef CONF_BOARD_H
-#define CONF_BOARD_H
-
-#endif // CONF_BOARD_H
diff --git a/FanBoard/FanControlBoard/src/main.c b/FanBoard/FanControlBoard/src/main.c
deleted file mode 100644
index 6648ecf..0000000
--- a/FanBoard/FanControlBoard/src/main.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
-* \file
-*
-* \brief Empty user application template
-*
-*/
-
-/**
-* \mainpage User Application template doxygen documentation
-*
-* \par Empty user application template
-*
-* Bare minimum empty user application template
-*
-* \par Content
-*
-* -# Include the ASF header files (through asf.h)
-* -# "Insert system clock initialization code here" comment
-* -# Minimal main function that starts with a call to board_init()
-* -# "Insert application code here" comment
-*
-*/
-
-/*
-* Include header files for all drivers that have been imported from
-* Atmel Software Framework (ASF).
-*/
-
-/*****************************************************************************
-*
-* Atmel Corporation
-*
-* File : main.c
-* Compiler : IAR EWAAVR 2.28a/3.10c
-* Revision : $Revision: 2516 $
-* Date : $Date: 2007-09-27 10:41:15 +0200 (to, 27 sep 2007) $
-* Updated by : $Author: mlarsson $
-*
-* Support mail : avr@atmel.com
-*
-* Supported devices : All devices with a TWI module can be used.
-* The example is written for the ATmega16
-*
-* AppNote : AVR311 - TWI Slave Implementation
-*
-* Description : Example of how to use the driver for TWI slave
-* communication.
-*
-****************************************************************************/
-/*! \page MISRA
-*
-* General disabling of MISRA rules:
-* * (MISRA C rule 1) compiler is configured to allow extensions
-* * (MISRA C rule 111) bit fields shall only be defined to be of type unsigned int or signed int
-* * (MISRA C rule 37) bitwise operations shall not be performed on signed integer types
-* As it does not work well with 8bit architecture and/or IAR
-* Other disabled MISRA rules
-* * (MISRA C rule 109) use of union - overlapping storage shall not be used
-* * (MISRA C rule 61) every non-empty case clause in a switch statement shall be terminated with a break statement
-*/
-
-#include <stdio.h>
-#include <string.h>
-#include "port_init.h"
-#include "timer.h"
-#include "ADC.h"
-#include "TWI_slave.h"
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>	
-
-int main( void )
-{
-	port_init();
-	timerConfig();
-	ADC_init();
-	
-	// Initialise TWI module for slave operation. Include address and/or enable General Call.
-	TWI_Slave_Initialise(TWI_SLV_ADDR);
-	sei();
-	// Start the TWI transceiver to enable reception of the first command from the TWI Master.	
-	TWI_Start_Transceiver();
-	
-	// This example is made to work together with the AVR315 TWI Master application note. In addition to connecting the TWI
-	// pins, also connect PORTB to the LEDS. The code reads a message as a TWI slave and acts according to if it is a
-	// general call, or an address call. If it is an address call, then the first byte is considered a command byte and
-	// it then responds differently according to the commands.
-	// This loop runs forever. If the TWI is busy the execution will just continue doing other operations.
-	
-	while (1)
-	{}
-}
-
diff --git a/FanBoard/FanControlBoard/src/port_init.c b/FanBoard/FanControlBoard/src/port_init.c
deleted file mode 100644
index 6193e25..0000000
--- a/FanBoard/FanControlBoard/src/port_init.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
-* port_init.c
-*
-* Created: 09.01.2015 09:26:39
-*  Author: Stanislav Chystiakov (DESY)
-*/
-#include <stdio.h>
-#include <string.h>
-#include <avr/io.h>
-#include "port_init.h"
-#include "timer.h"
-
-
-void port_init() {		// Port C, D initialization
-	DDRB |= 0x03;		// PORTB PIN_PB0 and PIN_PB1 out
-	PORTB &= 0xFC;		// PIN_PB0 and PIN_PB1 = 0
-	//PORTB |= 0x03;		// PIN_PB0 and PIN_PB1 = 1
-	
-	DDRC |= 0x08;		// PORTC out (MCULED)
-	PORTC |= 0x08;		// MCULED off
-	
-	DDRD = 0xFF;		// PORTD out
-	PORTD = 0x00;
-}
-
-void setPortDirection(uint8_t portName, uint8_t portDir) { // Set port direction
-	switch (portName) {	
-		case _PORTB_:
-		{
-			DDRB = (PORT_B_SAFE_MASK & portDir); // allow to change only PIN_PB0 and PIN_PB1
-			break;
-		}
-		case _PORTD_:
-		{
-			DDRD = portDir;
-			break;
-		}
-		case _PORTC_: // Test only!
-		{
-			break; // it is not possible to change preset port C direction
-		}
-	}
-}
-
-void setPortLevel(uint8_t portName, uint8_t portLev) { // Set port level
-	switch (portName) {
-		case _PORTB_:
-		{
-			PORTB = (PORT_B_SAFE_MASK & portLev); // allow to change only PIN_PB0 and PIN_PB1
-			break;
-		}
-		case _PORTD_:
-		{
-			PORTD = portLev;
-			break;
-		}
-		case _PORTC_: //Test only!
-		{
-			PORTC = (PORT_C_SAFE_MASK & portLev); // allow to change only MCULED_PIN
-			break;
-		}
-	}
-}
-
-uint8_t readPortLevel(uint8_t portName) { // Read port level
-	uint8_t portLevel = 0;
-	switch (portName) {
-		case _PORTB_:
-		{
-			portLevel = PORTB;
-			break;
-		}
-		case _PORTD_:
-		{
-			portLevel = PORTD;
-			break;
-		}
-		case _PORTC_:
-		{
-			portLevel = PORTC;
-			break;
-		}
-	}
-	return portLevel;
-}
-
-char togglePin(char pinName, char pinNum) {
-	static char togglePinStatus;
-	switch (pinName) {
-		case 'B':
-		PORTB  ^= pinNum;
-		togglePinStatus = TOGGLE_PIN_OK;
-		break;
-		case 'C':
-		PORTC  ^= pinNum;
-		togglePinStatus = TOGGLE_PIN_OK;
-		break;
-		case 'D':
-		PORTD  ^= pinNum;
-		togglePinStatus = TOGGLE_PIN_OK;
-		break;
-		default:
-		togglePinStatus = TOGGLE_PIN_ERR;
-	}
-	return togglePinStatus;
-}
\ No newline at end of file
diff --git a/FanBoard/FanControlBoard/src/port_init.h b/FanBoard/FanControlBoard/src/port_init.h
deleted file mode 100644
index 57efc4a..0000000
--- a/FanBoard/FanControlBoard/src/port_init.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * port_init.h
- *
- * Created: 09.01.2015 09:31:00
- *  Author: Stanislav Chystiakov (DESY)
- */ 
-
-
-#ifndef PORT_INIT_H_
-#define PORT_INIT_H_
-
-#define TOGGLE_PIN_OK 1
-#define TOGGLE_PIN_ERR 0
-
-#define PORT_B_SAFE_MASK 0x03
-#define PORT_C_SAFE_MASK 0x08
-
-// Masks for PINs PB0-PB1, PC3, PD0-PD7
-#define PORT_B0			0x01
-#define PORT_B1			0x02
-#define MCULED_PIN		0x08	// MCU LED on pin PC3
-#define PORT_D0			0x01
-#define PORT_D1			0x02
-#define PORT_D2			0x04
-#define PORT_D3			0x08
-#define PORT_D4			0x10
-#define PORT_D5			0x20
-#define PORT_D6			0x40
-#define PORT_D7			0x80
-
-#define _PORTB_			0x41	// transmit value for PORTB
-#define _PORTD_			0x42	// transmit value for PORTD
-#define _PORTC_			0x43	// transmit value for PORTC
-
-void port_init(void);
-char togglePin(char pinName, char pinNum);
-void setPortDirection(uint8_t portName, uint8_t portDir);
-void setPortLevel(uint8_t portName, uint8_t portLev);
-uint8_t readPortLevel(uint8_t portName);
-
-
-#endif /* PORT_INIT_H_ */
\ No newline at end of file
diff --git a/FanBoard/FanControlBoard/src/timer.c b/FanBoard/FanControlBoard/src/timer.c
deleted file mode 100644
index 2c4aa09..0000000
--- a/FanBoard/FanControlBoard/src/timer.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-* timer.c
-*
-* Created: 05.02.2015 08:01:50
-*  Author: USER
-*/
-#include "timer.h"
-#include "port_init.h"
-#include "TWI_Slave.h"
-#include "ADC.h"
-
-int countsToError = COUNTS_TO_ERR; //
-extern int adcDataBuf[3];
-extern uint8_t samplesNum;
-
-void timerConfig() {						//configure 16/bit Timer/Counter
-	cli();									// interrupt disable during initialization
-	TCCR1A = 0x00;
-	//TCCR1B = (1 << CS11);					//clk/8 (From prescaler)
-	TCCR1B = (1 << CS11) | (1 << CS10);		//clk/64 (From prescaler)
-	OCR1A = UPDATE_TIME;					// set timer tick's
-	TIMSK1 = 1 << OCIE1A;					//Timer/Counter1, Output Compare A Match Interrupt Enable
-	TCNT1 = 0;								// timer reset
-	sei();									// interrupt enable after initialization
-}
-
-
-//Timer 250ms now! 
-ISR (TIMER1_COMPA_vect) {					//TimerCounter0 Compare Match A
-	unsigned char adcChannel;
-	TCNT1 = 0;
-	//togglePin('B', PORT_B1);
-	
-	if ((countsToError > 0) && (countsToError <= COUNTS_TO_ERR)) // Watch Dog
-	{
-		countsToError--;
-		PORTC |= MCULED_PIN;		// MCULED_PIN is HIGH --> MCULED off
-	} 
-	else
-	{
-		PORTC &= ~MCULED_PIN;		// MCULED_PIN is LOW --> MCULED on
-		TWI_Start_Transceiver();	// Needed to restart TWI bus after FuseRelayBoard-uC reprogram/reload
-	}	
-	
-	for (adcChannel = 0; adcChannel < 3; adcChannel++)
-	{
-		adcDataBuf[adcChannel] = ADC_result_average(adcChannel);
-	}	
-}
\ No newline at end of file
diff --git a/FanBoard/FanControlBoard/src/timer.h b/FanBoard/FanControlBoard/src/timer.h
deleted file mode 100644
index 560e4e7..0000000
--- a/FanBoard/FanControlBoard/src/timer.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * timer.h
- *
- * Created: 05.02.2015 08:02:02
- *  Author: USER
- */ 
-
-#ifndef TIMER_H_
-#define TIMER_H_
-
-#include <avr/io.h>
-#include <avr/interrupt.h>
-
-#define F_CPU 8000000UL
-
-#define UPDATE_TIME		31250	//update time in timer tick's = ca. 250ms
-
-void timerConfig(void);
-
-#endif /* TIMER_H_ */
\ No newline at end of file
-- 
GitLab