diff --git a/ModuleAffichage.zip b/ModuleAffichage.zip
new file mode 100644
index 0000000..db3c6e9
Binary files /dev/null and b/ModuleAffichage.zip differ
diff --git a/PjtKEIL_Final/Driver/DriverJeuLaser.h b/PjtKEIL_Final/Driver/DriverJeuLaser.h
new file mode 100644
index 0000000..bc9b3bd
--- /dev/null
+++ b/PjtKEIL_Final/Driver/DriverJeuLaser.h
@@ -0,0 +1,345 @@
+/**
+ * Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
+ *
+ * GPIO - ADC - Sequenceur - System Timer - PWM - 72 MHz
+ * Modifs :
+ * enlèvement de tout ce qui est inutile dans le .h
+ * ajout de fonctions GPIO dans le .c pour utilisation en ASM ou en C :
+ * - GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
+ * - GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
+ *
+ * ajout d'une fonction qui impose une valeur de PWM (TIM3_CCR3)
+ * PWM_Set_Value_On_TIM3_C3( int Val)
+ * permet en ASM ou en C de fixer la valeur de PWM
+
+ * Ajout de commentaires
+
+ */
+#ifndef DRIVERJEULASER_H__
+#define DRIVERJEULASER_H__
+
+#include "stm32f10x.h"
+
+//**********************************************************************************************************
+//--------------------- CONFIGURATION CLOCK DU STM32 --------------------------------------
+//**********************************************************************************************************
+
+/**
+ * @brief Configure l'ensemble des horloges du uC
+ * @note horloge systeme (config statique a 72 MHz pour le STM32F103)
+ * @param None
+ * @retval None
+ */
+void CLOCK_Configure(void);
+
+
+
+
+
+
+
+
+
+
+//**********************************************************************************************************
+//--------------------- LES TIMERS GENERAL PURPOSE TIM1 à TIM 4 ------------------------------
+//**********************************************************************************************************
+
+/**
+ * @brief Configure un Timer TIM1 à TIM4 avec une périodicité donnée
+ * @note L' horloge des 4 timers a une fréquence de 72MHz
+ * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
+ * @param Durée_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer
+ * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
+ * @retval None
+ */
+void Timer_1234_Init_ff( TIM_TypeDef *Timer, u32 Duree_ticks );
+
+/**
+ * Macros de base pour utiliser les timers
+ */
+ // bloque le timer
+#define Bloque_Timer(Timer) Timer->CR1=(Timer->CR1)&~(1<<0)
+// Lance timer
+#define Run_Timer(Timer) Timer->CR1=(Timer->CR1)|(1<<0)
+
+
+
+/**
+ * @brief Associe une fonction d'interruption (callback) lors du débordement d'un timer
+ * @note
+ * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
+ * @param Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 -> priorité min)
+ * @param IT_function : le nom de la fonction Callback à appeler lors de l'interruption
+ * @retval None
+ */
+void Active_IT_Debordement_Timer( TIM_TypeDef *Timer, char Prio, void (*IT_function)(void) );
+
+
+
+
+
+
+
+
+
+
+
+//*********************************************************************************************************
+//--------------------- PWM TIM1 to TIM 4 ------------------------------
+//*********************************************************************************************************
+
+/**
+ * @brief Configure un timer en PWM
+ * @note
+ * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
+ * @param voie : un des 4 canaux possibles 1 à 4.
+ * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer
+ * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
+ * @retval Retourne la période en tick (normalement la même que le param d'entrée sauf si PSC utilisé
+ */
+unsigned short int PWM_Init_ff( TIM_TypeDef *Timer, char Voie, u32 Periode_ticks );
+
+
+
+/**
+ * @brief Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
+ * est donc : rcy = Thaut_ticks / Periode_ticks
+ * @note spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
+ * @param Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
+ * @retval None
+ */
+void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
+
+
+
+
+
+
+
+
+
+//**********************************************************************************************************
+//--------------------- LE SYSTICK TIMER, Part of Cortex M3 ------------------------------
+//**********************************************************************************************************
+
+/**
+ * @brief Configure le timer Systick avec une périodicité donnée
+ * @note Ce timer ne peut servir qu'à créer des temporisations ou générer des interruption
+ * ce n'est pas à proprement parler un périphérique, il fait partie du Cortex M3
+ * Ce timer est un 24 bits
+ * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour établir la périodicité
+ * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
+ * @retval None
+ */
+void Systick_Period_ff( unsigned int Periode_ticks );
+
+
+
+/**
+ * @brief Associe une fonction d'interruption (callback) lors du débordement du Systick
+ * @note
+ * @param Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 -> priorité min)
+ * @param IT_function : le nom de la fonction Callback à appeler lors de l'interruption
+ * @retval None
+ */
+void Systick_Prio_IT( char Prio, void (*Systick_function)(void) );
+
+
+/**
+ * Macros de base pour utiliser le Systick
+ */
+#define SysTick_On ((SysTick->CTRL)=(SysTick->CTRL)|1<<0)
+#define SysTick_Off ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<0))
+#define SysTick_Enable_IT ((SysTick->CTRL)=(SysTick->CTRL)|1<<1)
+#define SysTick_Disable_IT ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<1))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//**********************************************************************************************************
+//--------------------- LE SYSTICK TIMER, Part of Cortex M3 ------------------------------
+//**********************************************************************************************************
+
+/**
+ * @brief Active l'ADC du STM32, configure la durée de prélèvement de l'échantillon (temps
+ * de fermeture du switch d'acquisition
+ * @note
+ * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
+ * @param Duree_Ech_ticks : dirée de fermeture du switch d'échantillonnage en Tick d'horloge CPU
+ * exemple pour 1µs on choisira 72.
+ * @retval Nombre de Tick réellement pris en compte
+ */
+unsigned int Init_TimingADC_ActiveADC_ff( ADC_TypeDef * ADC, u32 Duree_Ech_ticks );
+
+
+/**
+ * @brief Sélectionne la voie à convertir
+ * @note Attention, la voie va de 0 à 15 et n'est pas directement lié au n°de GPIO
+ * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
+ * @param Voie_ADC : 1 à 15
+ * @retval None
+ */
+void Single_Channel_ADC( ADC_TypeDef * ADC, char Voie_ADC );
+
+
+
+
+
+/**
+ * @brief Permet lier le déclenchement au débordement d'un timer, spécifie également
+ * la période de débordement du timer
+ * @note pas besoin de régler le timer avec une autre fonction dédiée timer
+ * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
+ * @param Source : indique le timer qui déclenche l'ADC choix dans les define ci-dessous
+ * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer
+ * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
+ * @retval None
+ */
+
+// param pour Source :
+#define TIM1_CC1 0
+#define TIM1_CC2 1
+#define TIM1_CC3 2
+#define TIM2_CC2 3
+#define TIM4_CC4 5
+void Init_Conversion_On_Trig_Timer_ff( ADC_TypeDef * ADC, char Source, u32 Periode_ticks );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//**********************************************************************************************************
+//--------------------- ANALOG INPUT ADC & DMA ------------------------------
+//**********************************************************************************************************
+
+/**
+ * @brief Permer de lier l'ADC à un tableau en RAM pour une DMA
+ * @note
+ * @param Circ : circular. Si '0', en fin de DMA le ptr d'@ reste inchangé
+ * si '1' le ptr d'@ se recale à celle du début.
+ * @param Ptr_Table_DMA : contient l'@ de début de zone RAM à écrire
+ * @retval None
+ */
+void Init_ADC1_DMA1(char Circ, short int *Ptr_Table_DMA);
+
+
+
+
+
+/**
+ * @brief Lance une DMA sur le nombre de points spécifie. Les resultats seront stockes
+ * dans la zone de RAM écrite est indiquée lors de l'appel de la fonction Init_ADC1_DMA1
+ * @note
+ * @param NbEchDMA est le nombre d'échantillons à stocker.
+ * @retval None
+ */
+void Start_DMA1( u16 NbEchDMA );
+
+// arret DMA
+#define Stop_DMA1 DMA1_Channel1->CCR =(DMA1_Channel1->CCR) &~0x1;
+
+
+/**
+ * @brief Attend la fin d'un cycle de DMA. la duree depend de la periode d'acquisition
+ * et du nombre d'echantillons
+ * @note fonction d'attente (bloquante)
+ * @param None
+ * @retval None
+ */
+void Wait_On_End_Of_DMA1(void);
+
+
+
+
+
+
+
+
+//**********************************************************************************************************
+//--------------------- GPIO ------------------------------
+//**********************************************************************************************************
+
+/**
+ * @brief Initialisation d'un GPIO (A à C), pin x.
+ * peut être configuré :
+ * -> Input ou output
+ * -> architecture technologique (push-pull, open drain...)
+
+ * @note
+ * @param Port : GPIOA, GPIOB, GPIOC
+ * @param Broche : 0 à 15
+ * @param Sens : INPUT ou OUTPUT
+ * @param Techno : voir define ci dessous
+ * @retval 1 erreur, 0 si OK
+ */
+
+// Sens
+#define INPUT 'i'
+#define OUTPUT 'o'
+
+// Techno pour pin en entrée (INPUT)
+#define ANALOG 0
+#define INPUT_FLOATING 1
+#define INPUT_PULL_DOWN_UP 2
+
+// Techno pour pin en sortie (OUTPUT)
+#define OUTPUT_PPULL 0
+#define OUTPUT_OPDRAIN 1
+#define ALT_PPULL 2
+#define ALT_OPDRAIN 3
+
+// Exemple :
+// Port_IO_Init(GPIOB, 8, OUTPUT, OUTPUT_PPULL);
+// Place le bit 8 du port B en sortie Push-pull
+char GPIO_Configure(GPIO_TypeDef * Port, int Broche, int Sens, int Techno);
+
+
+/**
+ * @brief Mise à 1 d'une broche GPIO
+ * @note Une fonction par GPIO
+ * @param Broche : 0 à 15
+ * @retval None
+ */
+
+void GPIOA_Set(char Broche);
+void GPIOB_Set(char Broche);
+void GPIOC_Set(char Broche);
+
+
+
+/**
+ * @brief Mise à 0 d'une broche GPIO
+ * @note Une fonction par GPIO
+ * @param Broche : 0 à 15
+ * @retval None
+ */
+
+void GPIOA_Clear(char Broche);
+void GPIOB_Clear(char Broche);
+void GPIOC_Clear(char Broche);
+
+
+#endif
+
+
diff --git a/PjtKEIL_Final/Driver/DriverJeuLaser.inc b/PjtKEIL_Final/Driver/DriverJeuLaser.inc
new file mode 100644
index 0000000..48d5e50
--- /dev/null
+++ b/PjtKEIL_Final/Driver/DriverJeuLaser.inc
@@ -0,0 +1,56 @@
+
+; Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
+; Accès en aux fonctions suivantes :
+; GPIO :
+; GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
+; GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
+
+; PWM :
+;/**
+; * @brief Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
+; * est donc : rcy = Thaut_ticks / Periode_ticks
+; * @note spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
+; * @param Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
+; * @retval None
+; */
+
+;void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
+ import PWM_Set_Value_TIM3_Ch3
+
+
+
+;/**
+; * @brief Mise à 1 d'une broche GPIO
+; * @note Une fonction par GPIO
+; * @param Broche : 0 à 15
+; * @retval None
+; */
+
+;void GPIOA_Set(char Broche);
+ import GPIOA_Set
+
+;void GPIOB_Set(char Broche);
+ import GPIOB_Set
+
+;void GPIOC_Set(char Broche);
+ import GPIOC_Set
+
+
+
+;/**
+; * @brief Mise à 0 d'une broche GPIO
+; * @note Une fonction par GPIO
+; * @param Broche : 0 à 15
+; * @retval None
+; */
+
+;void GPIOA_Clear(char Broche);
+ import GPIOA_Clear
+
+;void GPIOB_Clear(char Broche);
+ import GPIOB_Clear
+
+;void GPIOC_Clear(char Broche);
+ import GPIOC_Clear
+
+ end
diff --git a/PjtKEIL_Final/Driver/DriverJeuLaser_1.h b/PjtKEIL_Final/Driver/DriverJeuLaser_1.h
new file mode 100644
index 0000000..bc9b3bd
--- /dev/null
+++ b/PjtKEIL_Final/Driver/DriverJeuLaser_1.h
@@ -0,0 +1,345 @@
+/**
+ * Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
+ *
+ * GPIO - ADC - Sequenceur - System Timer - PWM - 72 MHz
+ * Modifs :
+ * enlèvement de tout ce qui est inutile dans le .h
+ * ajout de fonctions GPIO dans le .c pour utilisation en ASM ou en C :
+ * - GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
+ * - GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
+ *
+ * ajout d'une fonction qui impose une valeur de PWM (TIM3_CCR3)
+ * PWM_Set_Value_On_TIM3_C3( int Val)
+ * permet en ASM ou en C de fixer la valeur de PWM
+
+ * Ajout de commentaires
+
+ */
+#ifndef DRIVERJEULASER_H__
+#define DRIVERJEULASER_H__
+
+#include "stm32f10x.h"
+
+//**********************************************************************************************************
+//--------------------- CONFIGURATION CLOCK DU STM32 --------------------------------------
+//**********************************************************************************************************
+
+/**
+ * @brief Configure l'ensemble des horloges du uC
+ * @note horloge systeme (config statique a 72 MHz pour le STM32F103)
+ * @param None
+ * @retval None
+ */
+void CLOCK_Configure(void);
+
+
+
+
+
+
+
+
+
+
+//**********************************************************************************************************
+//--------------------- LES TIMERS GENERAL PURPOSE TIM1 à TIM 4 ------------------------------
+//**********************************************************************************************************
+
+/**
+ * @brief Configure un Timer TIM1 à TIM4 avec une périodicité donnée
+ * @note L' horloge des 4 timers a une fréquence de 72MHz
+ * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
+ * @param Durée_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer
+ * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
+ * @retval None
+ */
+void Timer_1234_Init_ff( TIM_TypeDef *Timer, u32 Duree_ticks );
+
+/**
+ * Macros de base pour utiliser les timers
+ */
+ // bloque le timer
+#define Bloque_Timer(Timer) Timer->CR1=(Timer->CR1)&~(1<<0)
+// Lance timer
+#define Run_Timer(Timer) Timer->CR1=(Timer->CR1)|(1<<0)
+
+
+
+/**
+ * @brief Associe une fonction d'interruption (callback) lors du débordement d'un timer
+ * @note
+ * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
+ * @param Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 -> priorité min)
+ * @param IT_function : le nom de la fonction Callback à appeler lors de l'interruption
+ * @retval None
+ */
+void Active_IT_Debordement_Timer( TIM_TypeDef *Timer, char Prio, void (*IT_function)(void) );
+
+
+
+
+
+
+
+
+
+
+
+//*********************************************************************************************************
+//--------------------- PWM TIM1 to TIM 4 ------------------------------
+//*********************************************************************************************************
+
+/**
+ * @brief Configure un timer en PWM
+ * @note
+ * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
+ * @param voie : un des 4 canaux possibles 1 à 4.
+ * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer
+ * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
+ * @retval Retourne la période en tick (normalement la même que le param d'entrée sauf si PSC utilisé
+ */
+unsigned short int PWM_Init_ff( TIM_TypeDef *Timer, char Voie, u32 Periode_ticks );
+
+
+
+/**
+ * @brief Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
+ * est donc : rcy = Thaut_ticks / Periode_ticks
+ * @note spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
+ * @param Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
+ * @retval None
+ */
+void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
+
+
+
+
+
+
+
+
+
+//**********************************************************************************************************
+//--------------------- LE SYSTICK TIMER, Part of Cortex M3 ------------------------------
+//**********************************************************************************************************
+
+/**
+ * @brief Configure le timer Systick avec une périodicité donnée
+ * @note Ce timer ne peut servir qu'à créer des temporisations ou générer des interruption
+ * ce n'est pas à proprement parler un périphérique, il fait partie du Cortex M3
+ * Ce timer est un 24 bits
+ * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour établir la périodicité
+ * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
+ * @retval None
+ */
+void Systick_Period_ff( unsigned int Periode_ticks );
+
+
+
+/**
+ * @brief Associe une fonction d'interruption (callback) lors du débordement du Systick
+ * @note
+ * @param Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 -> priorité min)
+ * @param IT_function : le nom de la fonction Callback à appeler lors de l'interruption
+ * @retval None
+ */
+void Systick_Prio_IT( char Prio, void (*Systick_function)(void) );
+
+
+/**
+ * Macros de base pour utiliser le Systick
+ */
+#define SysTick_On ((SysTick->CTRL)=(SysTick->CTRL)|1<<0)
+#define SysTick_Off ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<0))
+#define SysTick_Enable_IT ((SysTick->CTRL)=(SysTick->CTRL)|1<<1)
+#define SysTick_Disable_IT ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<1))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//**********************************************************************************************************
+//--------------------- LE SYSTICK TIMER, Part of Cortex M3 ------------------------------
+//**********************************************************************************************************
+
+/**
+ * @brief Active l'ADC du STM32, configure la durée de prélèvement de l'échantillon (temps
+ * de fermeture du switch d'acquisition
+ * @note
+ * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
+ * @param Duree_Ech_ticks : dirée de fermeture du switch d'échantillonnage en Tick d'horloge CPU
+ * exemple pour 1µs on choisira 72.
+ * @retval Nombre de Tick réellement pris en compte
+ */
+unsigned int Init_TimingADC_ActiveADC_ff( ADC_TypeDef * ADC, u32 Duree_Ech_ticks );
+
+
+/**
+ * @brief Sélectionne la voie à convertir
+ * @note Attention, la voie va de 0 à 15 et n'est pas directement lié au n°de GPIO
+ * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
+ * @param Voie_ADC : 1 à 15
+ * @retval None
+ */
+void Single_Channel_ADC( ADC_TypeDef * ADC, char Voie_ADC );
+
+
+
+
+
+/**
+ * @brief Permet lier le déclenchement au débordement d'un timer, spécifie également
+ * la période de débordement du timer
+ * @note pas besoin de régler le timer avec une autre fonction dédiée timer
+ * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
+ * @param Source : indique le timer qui déclenche l'ADC choix dans les define ci-dessous
+ * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer
+ * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
+ * @retval None
+ */
+
+// param pour Source :
+#define TIM1_CC1 0
+#define TIM1_CC2 1
+#define TIM1_CC3 2
+#define TIM2_CC2 3
+#define TIM4_CC4 5
+void Init_Conversion_On_Trig_Timer_ff( ADC_TypeDef * ADC, char Source, u32 Periode_ticks );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//**********************************************************************************************************
+//--------------------- ANALOG INPUT ADC & DMA ------------------------------
+//**********************************************************************************************************
+
+/**
+ * @brief Permer de lier l'ADC à un tableau en RAM pour une DMA
+ * @note
+ * @param Circ : circular. Si '0', en fin de DMA le ptr d'@ reste inchangé
+ * si '1' le ptr d'@ se recale à celle du début.
+ * @param Ptr_Table_DMA : contient l'@ de début de zone RAM à écrire
+ * @retval None
+ */
+void Init_ADC1_DMA1(char Circ, short int *Ptr_Table_DMA);
+
+
+
+
+
+/**
+ * @brief Lance une DMA sur le nombre de points spécifie. Les resultats seront stockes
+ * dans la zone de RAM écrite est indiquée lors de l'appel de la fonction Init_ADC1_DMA1
+ * @note
+ * @param NbEchDMA est le nombre d'échantillons à stocker.
+ * @retval None
+ */
+void Start_DMA1( u16 NbEchDMA );
+
+// arret DMA
+#define Stop_DMA1 DMA1_Channel1->CCR =(DMA1_Channel1->CCR) &~0x1;
+
+
+/**
+ * @brief Attend la fin d'un cycle de DMA. la duree depend de la periode d'acquisition
+ * et du nombre d'echantillons
+ * @note fonction d'attente (bloquante)
+ * @param None
+ * @retval None
+ */
+void Wait_On_End_Of_DMA1(void);
+
+
+
+
+
+
+
+
+//**********************************************************************************************************
+//--------------------- GPIO ------------------------------
+//**********************************************************************************************************
+
+/**
+ * @brief Initialisation d'un GPIO (A à C), pin x.
+ * peut être configuré :
+ * -> Input ou output
+ * -> architecture technologique (push-pull, open drain...)
+
+ * @note
+ * @param Port : GPIOA, GPIOB, GPIOC
+ * @param Broche : 0 à 15
+ * @param Sens : INPUT ou OUTPUT
+ * @param Techno : voir define ci dessous
+ * @retval 1 erreur, 0 si OK
+ */
+
+// Sens
+#define INPUT 'i'
+#define OUTPUT 'o'
+
+// Techno pour pin en entrée (INPUT)
+#define ANALOG 0
+#define INPUT_FLOATING 1
+#define INPUT_PULL_DOWN_UP 2
+
+// Techno pour pin en sortie (OUTPUT)
+#define OUTPUT_PPULL 0
+#define OUTPUT_OPDRAIN 1
+#define ALT_PPULL 2
+#define ALT_OPDRAIN 3
+
+// Exemple :
+// Port_IO_Init(GPIOB, 8, OUTPUT, OUTPUT_PPULL);
+// Place le bit 8 du port B en sortie Push-pull
+char GPIO_Configure(GPIO_TypeDef * Port, int Broche, int Sens, int Techno);
+
+
+/**
+ * @brief Mise à 1 d'une broche GPIO
+ * @note Une fonction par GPIO
+ * @param Broche : 0 à 15
+ * @retval None
+ */
+
+void GPIOA_Set(char Broche);
+void GPIOB_Set(char Broche);
+void GPIOC_Set(char Broche);
+
+
+
+/**
+ * @brief Mise à 0 d'une broche GPIO
+ * @note Une fonction par GPIO
+ * @param Broche : 0 à 15
+ * @retval None
+ */
+
+void GPIOA_Clear(char Broche);
+void GPIOB_Clear(char Broche);
+void GPIOC_Clear(char Broche);
+
+
+#endif
+
+
diff --git a/PjtKEIL_Final/Driver/DriverJeuLaser_1.inc b/PjtKEIL_Final/Driver/DriverJeuLaser_1.inc
new file mode 100644
index 0000000..48d5e50
--- /dev/null
+++ b/PjtKEIL_Final/Driver/DriverJeuLaser_1.inc
@@ -0,0 +1,56 @@
+
+; Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
+; Accès en aux fonctions suivantes :
+; GPIO :
+; GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
+; GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
+
+; PWM :
+;/**
+; * @brief Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
+; * est donc : rcy = Thaut_ticks / Periode_ticks
+; * @note spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
+; * @param Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
+; * @retval None
+; */
+
+;void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
+ import PWM_Set_Value_TIM3_Ch3
+
+
+
+;/**
+; * @brief Mise à 1 d'une broche GPIO
+; * @note Une fonction par GPIO
+; * @param Broche : 0 à 15
+; * @retval None
+; */
+
+;void GPIOA_Set(char Broche);
+ import GPIOA_Set
+
+;void GPIOB_Set(char Broche);
+ import GPIOB_Set
+
+;void GPIOC_Set(char Broche);
+ import GPIOC_Set
+
+
+
+;/**
+; * @brief Mise à 0 d'une broche GPIO
+; * @note Une fonction par GPIO
+; * @param Broche : 0 à 15
+; * @retval None
+; */
+
+;void GPIOA_Clear(char Broche);
+ import GPIOA_Clear
+
+;void GPIOB_Clear(char Broche);
+ import GPIOB_Clear
+
+;void GPIOC_Clear(char Broche);
+ import GPIOC_Clear
+
+ end
diff --git a/PjtKEIL_Final/ModuleAffichage/Affichage_Valise.h b/PjtKEIL_Final/ModuleAffichage/Affichage_Valise.h
new file mode 100644
index 0000000..990ced9
--- /dev/null
+++ b/PjtKEIL_Final/ModuleAffichage/Affichage_Valise.h
@@ -0,0 +1,78 @@
+
+/* Fichier devant contenir l'ensemble de fichiers utiles pour le projet LaserQuest
+et qui concenent l'affichage sur la valise */
+/* mais non disponible en version source pour les étudiants. */
+
+#ifndef _AFFICHAGE_VALISE_H__
+#define _AFFICHAGE_VALISE_H__
+#include "stm32f10x.h"
+
+
+/**
+ * @brief Initialise les périphériques nécessaires à l'affichage sur la Mallette
+ * et gère la cible active. S'utilise aussi avec les ùmodules affichages simple (pas de mallette)
+ * @note Utilise TIM1, PA5, PA6 pour les cibles, PC7 à PC9 pour SPI émulé
+ * utilise aussi une interruption sut TIM1, prio 8.
+ * @param none
+ * @retval None
+ */
+void Init_Affichage(void);
+
+
+/**
+ * @brief Prépare l'affichage 2 digit sur l'afficheur demandé
+ * @note Exemple : Prepare_Afficheur(2, 99);
+ * prépare l'affichage de la valeur 99 sur l'afficheur n°2
+ * L'action est différée à l'exécution de Mise_A_Jour_Afficheurs_LED()
+ * @param char Aff : de 1 à 4 ; char Valeur de 0 à 99
+ * @retval None
+ */
+void Prepare_Afficheur(char Aff, char Valeur);
+
+
+
+void Prepare_Set_Point_Unite(char Aff);
+void Prepare_Clear_Point_Unite(char Aff);
+
+
+/**
+ * @brief Prépare l'allumage de la LED demandée
+ * @note Exemple : Prepare_Set_LED(LED_Cible_2);
+ * prépare l'allumage de la LED correspondant à la cible n°2
+ * L'action est différée à l'exécution de Mise_A_Jour_Afficheurs_LED()
+ * @param voir #define ci-dessous
+ * @retval None
+ */
+void Prepare_Set_LED(char LED);
+void Prepare_Clear_LED(char LED);
+
+
+/**
+ * @brief Effectue l'action d'écriture dans le module d'affichage
+ * à partir de tout ce qui a été préparé auparavant.
+ * @note
+ * @param None
+ * @retval None
+ */
+void Mise_A_Jour_Afficheurs_LED(void);
+
+/**
+ * @brief Spécifie le capteut actif, à savoir celui effectivement relié
+ * aux sorties disponibles sur la malette
+ * @note Exemple : Choix_Capteur(1)
+ * @param 1 à 4
+ * @retval None
+ */
+void Choix_Capteur(char Capteur);
+// define utile pour la fonction Prepare_Set_LED et Prepare_Clear_LED
+#define LED_LCD_R 5
+#define LED_LCD_V 4
+#define LED_Cible_4 3
+#define LED_Cible_3 2
+#define LED_Cible_2 1
+#define LED_Cible_1 0
+
+
+
+#endif
+
diff --git a/PjtKEIL_Final/Obj/Signal.asm b/PjtKEIL_Final/Obj/Signal.asm
new file mode 100644
index 0000000..afe6352
--- /dev/null
+++ b/PjtKEIL_Final/Obj/Signal.asm
@@ -0,0 +1,68 @@
+ AREA Signal, DATA, READONLY
+ export LeSignal
+LeSignal
+ DCW 0x0fff ; 0 4095 0.99976
+ DCW 0x0737 ; 1 1847 0.45093
+ DCW 0x0027 ; 2 39 0.00952
+ DCW 0x0a53 ; 3 2643 0.64526
+ DCW 0x0f64 ; 4 3940 0.96191
+ DCW 0x043b ; 5 1083 0.26440
+ DCW 0x0159 ; 6 345 0.08423
+ DCW 0x0d13 ; 7 3347 0.81714
+ DCW 0x0da8 ; 8 3496 0.85352
+ DCW 0x01d1 ; 9 465 0.11353
+ DCW 0x038e ; 10 910 0.22217
+ DCW 0x0f0e ; 11 3854 0.94092
+ DCW 0x0b10 ; 12 2832 0.69141
+ DCW 0x0058 ; 13 88 0.02148
+ DCW 0x0670 ; 14 1648 0.40234
+ DCW 0x0ff6 ; 15 4086 0.99756
+ DCW 0x0800 ; 16 2048 0.50000
+ DCW 0x000a ; 17 10 0.00244
+ DCW 0x0990 ; 18 2448 0.59766
+ DCW 0x0fa8 ; 19 4008 0.97852
+ DCW 0x04f0 ; 20 1264 0.30859
+ DCW 0x00f2 ; 21 242 0.05908
+ DCW 0x0c72 ; 22 3186 0.77783
+ DCW 0x0e2f ; 23 3631 0.88647
+ DCW 0x0258 ; 24 600 0.14648
+ DCW 0x02ed ; 25 749 0.18286
+ DCW 0x0ea7 ; 26 3751 0.91577
+ DCW 0x0bc5 ; 27 3013 0.73560
+ DCW 0x009c ; 28 156 0.03809
+ DCW 0x05ad ; 29 1453 0.35474
+ DCW 0x0fd9 ; 30 4057 0.99048
+ DCW 0x08c9 ; 31 2249 0.54907
+ DCW 0x0000 ; 32 0 0.00000
+ DCW 0x08c9 ; 33 2249 0.54907
+ DCW 0x0fd9 ; 34 4057 0.99048
+ DCW 0x05ad ; 35 1453 0.35474
+ DCW 0x009c ; 36 156 0.03809
+ DCW 0x0bc5 ; 37 3013 0.73560
+ DCW 0x0ea7 ; 38 3751 0.91577
+ DCW 0x02ed ; 39 749 0.18286
+ DCW 0x0258 ; 40 600 0.14648
+ DCW 0x0e2f ; 41 3631 0.88647
+ DCW 0x0c72 ; 42 3186 0.77783
+ DCW 0x00f2 ; 43 242 0.05908
+ DCW 0x04f0 ; 44 1264 0.30859
+ DCW 0x0fa8 ; 45 4008 0.97852
+ DCW 0x0990 ; 46 2448 0.59766
+ DCW 0x000a ; 47 10 0.00244
+ DCW 0x0800 ; 48 2048 0.50000
+ DCW 0x0ff6 ; 49 4086 0.99756
+ DCW 0x0670 ; 50 1648 0.40234
+ DCW 0x0058 ; 51 88 0.02148
+ DCW 0x0b10 ; 52 2832 0.69141
+ DCW 0x0f0e ; 53 3854 0.94092
+ DCW 0x038e ; 54 910 0.22217
+ DCW 0x01d1 ; 55 465 0.11353
+ DCW 0x0da8 ; 56 3496 0.85352
+ DCW 0x0d13 ; 57 3347 0.81714
+ DCW 0x0159 ; 58 345 0.08423
+ DCW 0x043b ; 59 1083 0.26440
+ DCW 0x0f64 ; 60 3940 0.96191
+ DCW 0x0a53 ; 61 2643 0.64526
+ DCW 0x0027 ; 62 39 0.00952
+ DCW 0x0737 ; 63 1847 0.45093
+ END
diff --git a/PjtKEIL_Final/Signaux/Signal.asm b/PjtKEIL_Final/Signaux/Signal.asm
new file mode 100644
index 0000000..5a79596
--- /dev/null
+++ b/PjtKEIL_Final/Signaux/Signal.asm
@@ -0,0 +1,68 @@
+ AREA Signal, DATA, READONLY
+ export LeSignal
+LeSignal
+ DCW 0x0fff ; 0 4095 0.99976
+ DCW 0x0ff6 ; 1 4086 0.99756
+ DCW 0x0fd9 ; 2 4057 0.99048
+ DCW 0x0fa8 ; 3 4008 0.97852
+ DCW 0x0f64 ; 4 3940 0.96191
+ DCW 0x0f0e ; 5 3854 0.94092
+ DCW 0x0ea7 ; 6 3751 0.91577
+ DCW 0x0e2f ; 7 3631 0.88647
+ DCW 0x0da8 ; 8 3496 0.85352
+ DCW 0x0d13 ; 9 3347 0.81714
+ DCW 0x0c72 ; 10 3186 0.77783
+ DCW 0x0bc5 ; 11 3013 0.73560
+ DCW 0x0b10 ; 12 2832 0.69141
+ DCW 0x0a53 ; 13 2643 0.64526
+ DCW 0x0990 ; 14 2448 0.59766
+ DCW 0x08c9 ; 15 2249 0.54907
+ DCW 0x0800 ; 16 2048 0.50000
+ DCW 0x0737 ; 17 1847 0.45093
+ DCW 0x0670 ; 18 1648 0.40234
+ DCW 0x05ad ; 19 1453 0.35474
+ DCW 0x04f0 ; 20 1264 0.30859
+ DCW 0x043b ; 21 1083 0.26440
+ DCW 0x038e ; 22 910 0.22217
+ DCW 0x02ed ; 23 749 0.18286
+ DCW 0x0258 ; 24 600 0.14648
+ DCW 0x01d1 ; 25 465 0.11353
+ DCW 0x0159 ; 26 345 0.08423
+ DCW 0x00f2 ; 27 242 0.05908
+ DCW 0x009c ; 28 156 0.03809
+ DCW 0x0058 ; 29 88 0.02148
+ DCW 0x0027 ; 30 39 0.00952
+ DCW 0x000a ; 31 10 0.00244
+ DCW 0x0000 ; 32 0 0.00000
+ DCW 0x000a ; 33 10 0.00244
+ DCW 0x0027 ; 34 39 0.00952
+ DCW 0x0058 ; 35 88 0.02148
+ DCW 0x009c ; 36 156 0.03809
+ DCW 0x00f2 ; 37 242 0.05908
+ DCW 0x0159 ; 38 345 0.08423
+ DCW 0x01d1 ; 39 465 0.11353
+ DCW 0x0258 ; 40 600 0.14648
+ DCW 0x02ed ; 41 749 0.18286
+ DCW 0x038e ; 42 910 0.22217
+ DCW 0x043b ; 43 1083 0.26440
+ DCW 0x04f0 ; 44 1264 0.30859
+ DCW 0x05ad ; 45 1453 0.35474
+ DCW 0x0670 ; 46 1648 0.40234
+ DCW 0x0737 ; 47 1847 0.45093
+ DCW 0x0800 ; 48 2048 0.50000
+ DCW 0x08c9 ; 49 2249 0.54907
+ DCW 0x0990 ; 50 2448 0.59766
+ DCW 0x0a53 ; 51 2643 0.64526
+ DCW 0x0b10 ; 52 2832 0.69141
+ DCW 0x0bc5 ; 53 3013 0.73560
+ DCW 0x0c72 ; 54 3186 0.77783
+ DCW 0x0d13 ; 55 3347 0.81714
+ DCW 0x0da8 ; 56 3496 0.85352
+ DCW 0x0e2f ; 57 3631 0.88647
+ DCW 0x0ea7 ; 58 3751 0.91577
+ DCW 0x0f0e ; 59 3854 0.94092
+ DCW 0x0f64 ; 60 3940 0.96191
+ DCW 0x0fa8 ; 61 4008 0.97852
+ DCW 0x0fd9 ; 62 4057 0.99048
+ DCW 0x0ff6 ; 63 4086 0.99756
+ END
diff --git a/PjtKEIL_Final/Signaux/Signal.m b/PjtKEIL_Final/Signaux/Signal.m
new file mode 100644
index 0000000..016fc56
--- /dev/null
+++ b/PjtKEIL_Final/Signaux/Signal.m
@@ -0,0 +1,38 @@
+clc
+clear
+
+N = 64 %input('Nombre d''échantilllons pour ce signal : ');
+Frel = input('Fréquence normalisée (nombre de périodes dans la durée totale) : ');
+Ph0 = input('Phase a l''origine (en degrés) : ');
+Ph0 = Ph0 * pi / 180.0; % a present en radian
+
+Ampl = 2048;
+Offset = 2048;
+%% Création du fichier .asm
+
+fileID = fopen(['Signalech64.asm'], 'w');
+fprintf(fileID,'\tAREA Signal, DATA, READONLY\n');
+fprintf(fileID,'\texport LeSignal\n');
+
+fprintf(fileID,'LeSignal\n');
+
+for i = 1: N
+ % fonction a modifier en fonction des besoins
+ Sig(i) = Offset + Ampl * cos( 2*pi*Frel*(i-1)/N + Ph0 );
+ % arrondi
+ iSig = int16(Sig(i));
+ % bornage du signal similaire a la sortie brute de l'ADC 12 bits
+ if ( iSig < 0 )
+ iSig = 0;
+ end
+ if ( iSig > 4095 )
+ iSig = 4095;
+ end
+
+ fprintf(fileID,'\tDCW\t0x%04x\t; %2d %4d %7.5f\n',iSig, i-1, iSig, double(iSig) / 4096.0 );
+
+end
+
+fprintf(fileID,'\tEND\n');
+fclose(fileID);
+plot(Sig);
\ No newline at end of file
diff --git a/PjtKEIL_Final/Src/DFT.s b/PjtKEIL_Final/Src/DFT.s
new file mode 100644
index 0000000..fc761fa
--- /dev/null
+++ b/PjtKEIL_Final/Src/DFT.s
@@ -0,0 +1,266 @@
+ PRESERVE8
+ THUMB
+ IMPORT LeSignal
+ EXPORT DFT_ModuleAuCarre
+ EXPORT DFT_reel
+ EXPORT DFT_imag
+
+;int DFT_ModuleAuCarre( short int * Signal64ech, char k){
+; int acumReel = 0;
+; int acumImag = 0;
+; for (int i= 0; i< 64; i++){
+; acumReel += Signal64ech[i]*TabCos[(i*k)%64];
+; }
+; return acumReel;
+;}
+
+; ====================== zone de réservation de données, ======================================
+;Section RAM (read only) :
+ area mesdata,data,readonly
+
+
+;Section RAM (read write):
+ area maram,data,readwrite
+
+
+
+; ===============================================================================================
+
+
+
+
+;Section ROM code (read only) :
+ area moncode,code,readonly
+; écrire le code ici
+
+DFT_reel proc
+
+;int DFT_ModuleAuCarre( short int * Signal64ech, char k){
+
+ push {r4, r5, r6, r7}
+; int acumReel = 0;
+ ldr r5,=TabCos
+
+
+ mov r2,#0 ; r2 = acumReel
+ mov r7, #63
+ mov r3,#0 ; r3 = i
+boucle1
+; for (int i= 0; i< 64; i++){
+ mul r4,r3,r1 ; = i*k
+ and r4,r7 ;= i*k%64
+
+ ldrsh r6, [r5,r4,LSL #1]; r6 = TabCos[(i*k)%64]
+ ldrsh r4, [r0,r3,LSL #1]; r4 = Signal64ech[i];
+ mul r4, r4,r6
+ add r2, r4
+ add r3, #1
+ cmp r3,#63
+ ble boucle1
+ mov r0, r2
+
+; acumReel += Signal64ech[i]*TabCos[(i*k)%64];
+; }
+; return acumReel;
+;}
+ pop {r4,r5,r6,r7}
+ bx lr
+ ENDFUNC
+
+DFT_imag proc
+
+;int DFT_ModuleAuCarre( short int * Signal64ech, char k){
+
+ push {r4, r5, r6, r7}
+; int acumReel = 0;
+ ldr r5,=TabSin
+
+
+ mov r2,#0 ; r2 = acumReel
+ mov r7, #63
+ mov r3,#0 ; r3 = i
+boucle2
+; for (int i= 0; i< 64; i++){
+ mul r4,r3,r1 ; = i*k
+ and r4,r7 ;= i*k%64
+
+ ldrsh r6, [r5,r4,LSL #1]; r6 = TabCos[(i*k)%64]
+ ldrsh r4, [r0,r3,LSL #1]; r4 = Signal64ech[i];
+ mul r4, r4,r6
+ add r2, r4
+ add r3, #1
+ cmp r3,#63
+ ble boucle2
+ mov r0, r2
+
+; acumReel += Signal64ech[i]*TabCos[(i*k)%64];
+; }
+; return acumReel;
+;}
+ pop {r4,r5,r6,r7}
+ bx lr
+ ENDFUNC
+
+DFT_ModuleAuCarre proc
+
+;int DFT_ModuleAuCarre( short int * Signal64ech, char k){
+ push {lr}
+ push {r4}
+
+ push {r0}
+ push {r1}
+ bl DFT_reel
+ mov r4,r0
+ pop {r1}
+ pop {r0}
+ bl DFT_imag
+
+ asr r4, #16
+ asr r0, #16
+ mul r4,r4
+ mul r0,r0;utiliser multiplication longue (smul?) et garder uniquement le registre de poids fort
+ add r0,r4
+
+ pop{r4}
+ pop{pc}
+ ENDFUNC
+;Section ROM code (read only) :
+ AREA Trigo, DATA, READONLY
+; codage fractionnaire 1.15
+ export TabCos
+ export TabSin
+TabCos
+ DCW 32767 ; 0 0x7fff 0.99997
+ DCW 32610 ; 1 0x7f62 0.99518
+ DCW 32138 ; 2 0x7d8a 0.98077
+ DCW 31357 ; 3 0x7a7d 0.95694
+ DCW 30274 ; 4 0x7642 0.92389
+ DCW 28899 ; 5 0x70e3 0.88193
+ DCW 27246 ; 6 0x6a6e 0.83148
+ DCW 25330 ; 7 0x62f2 0.77301
+ DCW 23170 ; 8 0x5a82 0.70709
+ DCW 20788 ; 9 0x5134 0.63440
+ DCW 18205 ; 10 0x471d 0.55557
+ DCW 15447 ; 11 0x3c57 0.47141
+ DCW 12540 ; 12 0x30fc 0.38269
+ DCW 9512 ; 13 0x2528 0.29028
+ DCW 6393 ; 14 0x18f9 0.19510
+ DCW 3212 ; 15 0x0c8c 0.09802
+ DCW 0 ; 16 0x0000 0.00000
+ DCW -3212 ; 17 0xf374 -0.09802
+ DCW -6393 ; 18 0xe707 -0.19510
+ DCW -9512 ; 19 0xdad8 -0.29028
+ DCW -12540 ; 20 0xcf04 -0.38269
+ DCW -15447 ; 21 0xc3a9 -0.47141
+ DCW -18205 ; 22 0xb8e3 -0.55557
+ DCW -20788 ; 23 0xaecc -0.63440
+ DCW -23170 ; 24 0xa57e -0.70709
+ DCW -25330 ; 25 0x9d0e -0.77301
+ DCW -27246 ; 26 0x9592 -0.83148
+ DCW -28899 ; 27 0x8f1d -0.88193
+ DCW -30274 ; 28 0x89be -0.92389
+ DCW -31357 ; 29 0x8583 -0.95694
+ DCW -32138 ; 30 0x8276 -0.98077
+ DCW -32610 ; 31 0x809e -0.99518
+ DCW -32768 ; 32 0x8000 -1.00000
+ DCW -32610 ; 33 0x809e -0.99518
+ DCW -32138 ; 34 0x8276 -0.98077
+ DCW -31357 ; 35 0x8583 -0.95694
+ DCW -30274 ; 36 0x89be -0.92389
+ DCW -28899 ; 37 0x8f1d -0.88193
+ DCW -27246 ; 38 0x9592 -0.83148
+ DCW -25330 ; 39 0x9d0e -0.77301
+ DCW -23170 ; 40 0xa57e -0.70709
+ DCW -20788 ; 41 0xaecc -0.63440
+ DCW -18205 ; 42 0xb8e3 -0.55557
+ DCW -15447 ; 43 0xc3a9 -0.47141
+ DCW -12540 ; 44 0xcf04 -0.38269
+ DCW -9512 ; 45 0xdad8 -0.29028
+ DCW -6393 ; 46 0xe707 -0.19510
+ DCW -3212 ; 47 0xf374 -0.09802
+ DCW 0 ; 48 0x0000 0.00000
+ DCW 3212 ; 49 0x0c8c 0.09802
+ DCW 6393 ; 50 0x18f9 0.19510
+ DCW 9512 ; 51 0x2528 0.29028
+ DCW 12540 ; 52 0x30fc 0.38269
+ DCW 15447 ; 53 0x3c57 0.47141
+ DCW 18205 ; 54 0x471d 0.55557
+ DCW 20788 ; 55 0x5134 0.63440
+ DCW 23170 ; 56 0x5a82 0.70709
+ DCW 25330 ; 57 0x62f2 0.77301
+ DCW 27246 ; 58 0x6a6e 0.83148
+ DCW 28899 ; 59 0x70e3 0.88193
+ DCW 30274 ; 60 0x7642 0.92389
+ DCW 31357 ; 61 0x7a7d 0.95694
+ DCW 32138 ; 62 0x7d8a 0.98077
+ DCW 32610 ; 63 0x7f62 0.99518
+TabSin
+ DCW 0 ; 0 0x0000 0.00000
+ DCW 3212 ; 1 0x0c8c 0.09802
+ DCW 6393 ; 2 0x18f9 0.19510
+ DCW 9512 ; 3 0x2528 0.29028
+ DCW 12540 ; 4 0x30fc 0.38269
+ DCW 15447 ; 5 0x3c57 0.47141
+ DCW 18205 ; 6 0x471d 0.55557
+ DCW 20788 ; 7 0x5134 0.63440
+ DCW 23170 ; 8 0x5a82 0.70709
+ DCW 25330 ; 9 0x62f2 0.77301
+ DCW 27246 ; 10 0x6a6e 0.83148
+ DCW 28899 ; 11 0x70e3 0.88193
+ DCW 30274 ; 12 0x7642 0.92389
+ DCW 31357 ; 13 0x7a7d 0.95694
+ DCW 32138 ; 14 0x7d8a 0.98077
+ DCW 32610 ; 15 0x7f62 0.99518
+ DCW 32767 ; 16 0x7fff 0.99997
+ DCW 32610 ; 17 0x7f62 0.99518
+ DCW 32138 ; 18 0x7d8a 0.98077
+ DCW 31357 ; 19 0x7a7d 0.95694
+ DCW 30274 ; 20 0x7642 0.92389
+ DCW 28899 ; 21 0x70e3 0.88193
+ DCW 27246 ; 22 0x6a6e 0.83148
+ DCW 25330 ; 23 0x62f2 0.77301
+ DCW 23170 ; 24 0x5a82 0.70709
+ DCW 20788 ; 25 0x5134 0.63440
+ DCW 18205 ; 26 0x471d 0.55557
+ DCW 15447 ; 27 0x3c57 0.47141
+ DCW 12540 ; 28 0x30fc 0.38269
+ DCW 9512 ; 29 0x2528 0.29028
+ DCW 6393 ; 30 0x18f9 0.19510
+ DCW 3212 ; 31 0x0c8c 0.09802
+ DCW 0 ; 32 0x0000 0.00000
+ DCW -3212 ; 33 0xf374 -0.09802
+ DCW -6393 ; 34 0xe707 -0.19510
+ DCW -9512 ; 35 0xdad8 -0.29028
+ DCW -12540 ; 36 0xcf04 -0.38269
+ DCW -15447 ; 37 0xc3a9 -0.47141
+ DCW -18205 ; 38 0xb8e3 -0.55557
+ DCW -20788 ; 39 0xaecc -0.63440
+ DCW -23170 ; 40 0xa57e -0.70709
+ DCW -25330 ; 41 0x9d0e -0.77301
+ DCW -27246 ; 42 0x9592 -0.83148
+ DCW -28899 ; 43 0x8f1d -0.88193
+ DCW -30274 ; 44 0x89be -0.92389
+ DCW -31357 ; 45 0x8583 -0.95694
+ DCW -32138 ; 46 0x8276 -0.98077
+ DCW -32610 ; 47 0x809e -0.99518
+ DCW -32768 ; 48 0x8000 -1.00000
+ DCW -32610 ; 49 0x809e -0.99518
+ DCW -32138 ; 50 0x8276 -0.98077
+ DCW -31357 ; 51 0x8583 -0.95694
+ DCW -30274 ; 52 0x89be -0.92389
+ DCW -28899 ; 53 0x8f1d -0.88193
+ DCW -27246 ; 54 0x9592 -0.83148
+ DCW -25330 ; 55 0x9d0e -0.77301
+ DCW -23170 ; 56 0xa57e -0.70709
+ DCW -20788 ; 57 0xaecc -0.63440
+ DCW -18205 ; 58 0xb8e3 -0.55557
+ DCW -15447 ; 59 0xc3a9 -0.47141
+ DCW -12540 ; 60 0xcf04 -0.38269
+ DCW -9512 ; 61 0xdad8 -0.29028
+ DCW -6393 ; 62 0xe707 -0.19510
+ DCW -3212 ; 63 0xf374 -0.09802
+
+
+
+
+ END
\ No newline at end of file
diff --git a/PjtKEIL_Final/Src/GestionSon.s b/PjtKEIL_Final/Src/GestionSon.s
new file mode 100644
index 0000000..df3c5a1
--- /dev/null
+++ b/PjtKEIL_Final/Src/GestionSon.s
@@ -0,0 +1,71 @@
+ PRESERVE8
+ THUMB
+ EXPORT CallbackSon
+ EXPORT SortieSon
+ EXPORT i
+ IMPORT Son
+ IMPORT LongueurSon
+ INCLUDE DriverJeuLaser.inc
+;void CallbackSon(void){
+; static int i = 0;
+; if(i < 5512){
+;0 SortieSon = (Son[i] + 32768) * 719 / 65535;
+; i++;
+; }
+;}
+
+
+
+; ====================== zone de réservation de données, ======================================
+;Section RAM (read only) :
+ area mesdata,data,readonly
+
+
+;Section RAM (read write):
+ area maram,data,readwrite
+
+i dcd 0
+SortieSon dcw 0
+
+
+; ===============================================================================================
+
+
+
+
+;Section ROM code (read only) :
+ area moncode,code,readonly
+; écrire le code ici
+
+CallbackSon proc
+ push {lr}
+; static int i = 0;
+ ldr r0,=i
+ ldr r1, [r0]
+ ldr r2,LongueurSon
+ cmp r2, r1
+; if(i < 5512)
+ ble fin
+;0 SortieSon = (Son[i] + 32768) * 719 / 65535;
+ ldr r3,=Son
+ ldrsh r2, [r3,r1, LSL#1]
+ add r2, #32768
+ mov r12, #719
+ mul r2, r12
+ mov r12, #65535
+ udiv r2, r12
+; i++;
+ add r1, #1
+ str r1, [r0]
+; On stocke enfin la sortie son
+ ldr r0, =SortieSon
+ strh r2, [r0]
+ mov r0, r2
+ bl PWM_Set_Value_TIM3_Ch3
+
+fin
+ pop {pc}
+ ENDFUNC
+
+
+ END
\ No newline at end of file
diff --git a/PjtKEIL_Final/Src/Signal.asm b/PjtKEIL_Final/Src/Signal.asm
new file mode 100644
index 0000000..5a79596
--- /dev/null
+++ b/PjtKEIL_Final/Src/Signal.asm
@@ -0,0 +1,68 @@
+ AREA Signal, DATA, READONLY
+ export LeSignal
+LeSignal
+ DCW 0x0fff ; 0 4095 0.99976
+ DCW 0x0ff6 ; 1 4086 0.99756
+ DCW 0x0fd9 ; 2 4057 0.99048
+ DCW 0x0fa8 ; 3 4008 0.97852
+ DCW 0x0f64 ; 4 3940 0.96191
+ DCW 0x0f0e ; 5 3854 0.94092
+ DCW 0x0ea7 ; 6 3751 0.91577
+ DCW 0x0e2f ; 7 3631 0.88647
+ DCW 0x0da8 ; 8 3496 0.85352
+ DCW 0x0d13 ; 9 3347 0.81714
+ DCW 0x0c72 ; 10 3186 0.77783
+ DCW 0x0bc5 ; 11 3013 0.73560
+ DCW 0x0b10 ; 12 2832 0.69141
+ DCW 0x0a53 ; 13 2643 0.64526
+ DCW 0x0990 ; 14 2448 0.59766
+ DCW 0x08c9 ; 15 2249 0.54907
+ DCW 0x0800 ; 16 2048 0.50000
+ DCW 0x0737 ; 17 1847 0.45093
+ DCW 0x0670 ; 18 1648 0.40234
+ DCW 0x05ad ; 19 1453 0.35474
+ DCW 0x04f0 ; 20 1264 0.30859
+ DCW 0x043b ; 21 1083 0.26440
+ DCW 0x038e ; 22 910 0.22217
+ DCW 0x02ed ; 23 749 0.18286
+ DCW 0x0258 ; 24 600 0.14648
+ DCW 0x01d1 ; 25 465 0.11353
+ DCW 0x0159 ; 26 345 0.08423
+ DCW 0x00f2 ; 27 242 0.05908
+ DCW 0x009c ; 28 156 0.03809
+ DCW 0x0058 ; 29 88 0.02148
+ DCW 0x0027 ; 30 39 0.00952
+ DCW 0x000a ; 31 10 0.00244
+ DCW 0x0000 ; 32 0 0.00000
+ DCW 0x000a ; 33 10 0.00244
+ DCW 0x0027 ; 34 39 0.00952
+ DCW 0x0058 ; 35 88 0.02148
+ DCW 0x009c ; 36 156 0.03809
+ DCW 0x00f2 ; 37 242 0.05908
+ DCW 0x0159 ; 38 345 0.08423
+ DCW 0x01d1 ; 39 465 0.11353
+ DCW 0x0258 ; 40 600 0.14648
+ DCW 0x02ed ; 41 749 0.18286
+ DCW 0x038e ; 42 910 0.22217
+ DCW 0x043b ; 43 1083 0.26440
+ DCW 0x04f0 ; 44 1264 0.30859
+ DCW 0x05ad ; 45 1453 0.35474
+ DCW 0x0670 ; 46 1648 0.40234
+ DCW 0x0737 ; 47 1847 0.45093
+ DCW 0x0800 ; 48 2048 0.50000
+ DCW 0x08c9 ; 49 2249 0.54907
+ DCW 0x0990 ; 50 2448 0.59766
+ DCW 0x0a53 ; 51 2643 0.64526
+ DCW 0x0b10 ; 52 2832 0.69141
+ DCW 0x0bc5 ; 53 3013 0.73560
+ DCW 0x0c72 ; 54 3186 0.77783
+ DCW 0x0d13 ; 55 3347 0.81714
+ DCW 0x0da8 ; 56 3496 0.85352
+ DCW 0x0e2f ; 57 3631 0.88647
+ DCW 0x0ea7 ; 58 3751 0.91577
+ DCW 0x0f0e ; 59 3854 0.94092
+ DCW 0x0f64 ; 60 3940 0.96191
+ DCW 0x0fa8 ; 61 4008 0.97852
+ DCW 0x0fd9 ; 62 4057 0.99048
+ DCW 0x0ff6 ; 63 4086 0.99756
+ END
diff --git a/PjtKEIL_Final/Src/bruitverre.asm b/PjtKEIL_Final/Src/bruitverre.asm
new file mode 100644
index 0000000..bf5ba29
--- /dev/null
+++ b/PjtKEIL_Final/Src/bruitverre.asm
@@ -0,0 +1,5527 @@
+;*********************************************
+
+ AREA SecSon, DATA, READONLY
+ ;*********************************************
+
+
+ export LongueurSon
+ export PeriodeSonMicroSec
+ export Son
+
+LongueurSon DCD 5512
+PeriodeSonMicroSec DCD 91
+Son
+ DCW -6911
+ DCW 20666
+ DCW -1338
+ DCW 10995
+ DCW -23488
+ DCW -18984
+ DCW 29795
+ DCW -21890
+ DCW 12388
+ DCW 16304
+ DCW -32768
+ DCW 13298
+ DCW 22737
+ DCW -20334
+ DCW 4588
+ DCW 5271
+ DCW -27547
+ DCW 19370
+ DCW -4248
+ DCW -7368
+ DCW 24620
+ DCW -21404
+ DCW 14442
+ DCW 4961
+ DCW -7125
+ DCW 21290
+ DCW -22096
+ DCW -6605
+ DCW 6777
+ DCW -14300
+ DCW 8261
+ DCW -2223
+ DCW -6714
+ DCW 15935
+ DCW -13063
+ DCW -3648
+ DCW 19575
+ DCW -15365
+ DCW 7934
+ DCW 23001
+ DCW -10157
+ DCW -5535
+ DCW -7091
+ DCW 3950
+ DCW 7741
+ DCW -8492
+ DCW 1686
+ DCW -6785
+ DCW -6663
+ DCW 5548
+ DCW -15768
+ DCW -2114
+ DCW 18837
+ DCW -13201
+ DCW 3493
+ DCW 21693
+ DCW -2961
+ DCW 8207
+ DCW -12924
+ DCW -10400
+ DCW 16283
+ DCW -22049
+ DCW 2080
+ DCW 21521
+ DCW -12295
+ DCW -3355
+ DCW 3766
+ DCW -1736
+ DCW 243
+ DCW -3078
+ DCW 5452
+ DCW 14019
+ DCW -8475
+ DCW 386
+ DCW -12182
+ DCW -13620
+ DCW 20749
+ DCW -1921
+ DCW 4332
+ DCW 11159
+ DCW -17239
+ DCW -9343
+ DCW 9758
+ DCW -11566
+ DCW -294
+ DCW 8244
+ DCW -13503
+ DCW 18862
+ DCW 4927
+ DCW -22662
+ DCW -1355
+ DCW -6030
+ DCW -1854
+ DCW 14325
+ DCW -2709
+ DCW -1665
+ DCW 7607
+ DCW -5997
+ DCW 14191
+ DCW -369
+ DCW -14400
+ DCW 19106
+ DCW -8857
+ DCW -2881
+ DCW 5414
+ DCW -12354
+ DCW 16309
+ DCW -1308
+ DCW -9557
+ DCW 9532
+ DCW 3107
+ DCW -1447
+ DCW -7263
+ DCW -15617
+ DCW 8681
+ DCW -4843
+ DCW -13457
+ DCW 31439
+ DCW -13612
+ DCW -4588
+ DCW 3405
+ DCW -23987
+ DCW 32767
+ DCW -289
+ DCW -10215
+ DCW 30843
+ DCW -16631
+ DCW -8412
+ DCW -3242
+ DCW -3221
+ DCW 13516
+ DCW -16531
+ DCW -10689
+ DCW 13306
+ DCW -15306
+ DCW -10861
+ DCW 11322
+ DCW -12702
+ DCW 16518
+ DCW 7024
+ DCW -12572
+ DCW 26193
+ DCW -25496
+ DCW 101
+ DCW 18116
+ DCW -20557
+ DCW 20468
+ DCW -14099
+ DCW -12211
+ DCW 18611
+ DCW 1619
+ DCW 8068
+ DCW -10891
+ DCW -7313
+ DCW 10123
+ DCW -570
+ DCW 4290
+ DCW 7582
+ DCW -12287
+ DCW -923
+ DCW 5078
+ DCW -6840
+ DCW 17533
+ DCW -7871
+ DCW -13977
+ DCW 2084
+ DCW -9092
+ DCW 11742
+ DCW -4667
+ DCW -365
+ DCW 5552
+ DCW -8580
+ DCW 1166
+ DCW 6215
+ DCW 4592
+ DCW -5636
+ DCW -3627
+ DCW -17856
+ DCW 8047
+ DCW 12723
+ DCW -24196
+ DCW 6399
+ DCW 16589
+ DCW -11700
+ DCW -6102
+ DCW 23366
+ DCW -11679
+ DCW -12132
+ DCW 22477
+ DCW -18841
+ DCW 2550
+ DCW 10048
+ DCW -6823
+ DCW 7502
+ DCW -1166
+ DCW 9234
+ DCW -13864
+ DCW -9263
+ DCW 8848
+ DCW -5632
+ DCW 956
+ DCW 2835
+ DCW 3535
+ DCW -1241
+ DCW 4932
+ DCW -3715
+ DCW -2235
+ DCW 6211
+ DCW -9477
+ DCW -4445
+ DCW -12195
+ DCW 9863
+ DCW 15617
+ DCW -14069
+ DCW 5405
+ DCW 9632
+ DCW 323
+ DCW -13247
+ DCW -654
+ DCW 14946
+ DCW -12803
+ DCW 1497
+ DCW 2566
+ DCW 1598
+ DCW 9611
+ DCW -14388
+ DCW -1367
+ DCW 14761
+ DCW -1287
+ DCW -26503
+ DCW 18472
+ DCW 18917
+ DCW -25589
+ DCW 16162
+ DCW -19114
+ DCW -4919
+ DCW 20200
+ DCW -18250
+ DCW 11327
+ DCW -1912
+ DCW 3439
+ DCW -21051
+ DCW 6680
+ DCW 32767
+ DCW -20917
+ DCW 13998
+ DCW -12555
+ DCW 566
+ DCW 1241
+ DCW -9293
+ DCW 21731
+ DCW -17290
+ DCW 9033
+ DCW -8106
+ DCW -1065
+ DCW 8458
+ DCW -20229
+ DCW 13398
+ DCW -3208
+ DCW -3518
+ DCW 5456
+ DCW -1208
+ DCW -11159
+ DCW 11289
+ DCW 6303
+ DCW -20586
+ DCW 31736
+ DCW -17302
+ DCW -9909
+ DCW 27702
+ DCW -15419
+ DCW 2311
+ DCW -4344
+ DCW -1103
+ DCW -12170
+ DCW 11348
+ DCW 3317
+ DCW -17634
+ DCW 19781
+ DCW -3745
+ DCW -4064
+ DCW -1774
+ DCW 130
+ DCW -6504
+ DCW 3313
+ DCW 2717
+ DCW -7599
+ DCW 14459
+ DCW -3984
+ DCW -1807
+ DCW 1635
+ DCW -2533
+ DCW 2495
+ DCW -6928
+ DCW 2093
+ DCW 1887
+ DCW -2873
+ DCW 12186
+ DCW -13369
+ DCW 2944
+ DCW 13570
+ DCW -16267
+ DCW -872
+ DCW -1522
+ DCW -3451
+ DCW -4495
+ DCW 16216
+ DCW 2449
+ DCW 994
+ DCW 10337
+ DCW -17017
+ DCW 356
+ DCW -315
+ DCW -2185
+ DCW -4927
+ DCW 2776
+ DCW -1577
+ DCW -4990
+ DCW 12102
+ DCW -9045
+ DCW 4047
+ DCW 4152
+ DCW -23710
+ DCW 4516
+ DCW 9410
+ DCW -12329
+ DCW 3502
+ DCW 11037
+ DCW -8840
+ DCW -2252
+ DCW 15260
+ DCW -19709
+ DCW 3321
+ DCW 16199
+ DCW -20921
+ DCW 3741
+ DCW 9159
+ DCW -2504
+ DCW -3753
+ DCW 10626
+ DCW -2969
+ DCW -5661
+ DCW 4890
+ DCW -11423
+ DCW 11180
+ DCW 4487
+ DCW -11947
+ DCW 4894
+ DCW 3476
+ DCW -6517
+ DCW 10257
+ DCW 5724
+ DCW -14216
+ DCW 10270
+ DCW -2264
+ DCW -14933
+ DCW 18489
+ DCW 990
+ DCW -13281
+ DCW 4906
+ DCW 5200
+ DCW -2814
+ DCW -1669
+ DCW 5632
+ DCW -2306
+ DCW -3753
+ DCW -8655
+ DCW 2088
+ DCW 2659
+ DCW -2537
+ DCW 12392
+ DCW -5414
+ DCW 981
+ DCW -2462
+ DCW -3539
+ DCW 2114
+ DCW -2315
+ DCW 8618
+ DCW -17256
+ DCW -1598
+ DCW 7381
+ DCW 92
+ DCW 1631
+ DCW -6722
+ DCW 11696
+ DCW -12874
+ DCW -5758
+ DCW 12132
+ DCW -3892
+ DCW 2273
+ DCW 6596
+ DCW -705
+ DCW -8052
+ DCW 15294
+ DCW -11197
+ DCW -8031
+ DCW 18594
+ DCW -14581
+ DCW 2487
+ DCW -1254
+ DCW 4948
+ DCW 11306
+ DCW -7297
+ DCW 1661
+ DCW -1912
+ DCW 5267
+ DCW -9251
+ DCW 3640
+ DCW 7909
+ DCW -14832
+ DCW 4613
+ DCW 2374
+ DCW -8286
+ DCW 4508
+ DCW 7796
+ DCW -14887
+ DCW 4726
+ DCW 5619
+ DCW -16283
+ DCW 14912
+ DCW -2881
+ DCW -117
+ DCW 4579
+ DCW -14514
+ DCW 15029
+ DCW -6127
+ DCW 3774
+ DCW 12446
+ DCW -12933
+ DCW 4051
+ DCW -7079
+ DCW 1254
+ DCW 3980
+ DCW -3233
+ DCW 11561
+ DCW 948
+ DCW -13914
+ DCW 5590
+ DCW 7511
+ DCW -13797
+ DCW 15415
+ DCW -5401
+ DCW -14736
+ DCW 12346
+ DCW -5301
+ DCW 7854
+ DCW -2751
+ DCW -1971
+ DCW -440
+ DCW -7838
+ DCW 8240
+ DCW -6026
+ DCW 5548
+ DCW 2554
+ DCW 2738
+ DCW 4110
+ DCW -15986
+ DCW 5246
+ DCW 7330
+ DCW -14941
+ DCW 210
+ DCW 10215
+ DCW -15663
+ DCW 12220
+ DCW 8110
+ DCW -10714
+ DCW 13734
+ DCW -14954
+ DCW 3183
+ DCW 4240
+ DCW -8144
+ DCW 16866
+ DCW -9809
+ DCW -4323
+ DCW 13302
+ DCW -4793
+ DCW -4982
+ DCW 9876
+ DCW -4399
+ DCW -4911
+ DCW 3338
+ DCW -403
+ DCW 5162
+ DCW -9532
+ DCW 2613
+ DCW 3749
+ DCW -6458
+ DCW 2684
+ DCW -1916
+ DCW 1736
+ DCW 256
+ DCW 7569
+ DCW -1103
+ DCW -17982
+ DCW 9272
+ DCW 6164
+ DCW -15084
+ DCW 14929
+ DCW 3233
+ DCW -19080
+ DCW 10501
+ DCW -3451
+ DCW -2663
+ DCW 8026
+ DCW -11431
+ DCW 7364
+ DCW -4034
+ DCW -5347
+ DCW 16317
+ DCW -7984
+ DCW -243
+ DCW 2914
+ DCW -11406
+ DCW -1124
+ DCW 2344
+ DCW 8215
+ DCW 2449
+ DCW -3611
+ DCW 11650
+ DCW -6504
+ DCW -11532
+ DCW 20330
+ DCW -5766
+ DCW -8307
+ DCW 8211
+ DCW -8198
+ DCW 6458
+ DCW 2361
+ DCW 6185
+ DCW 3640
+ DCW -15990
+ DCW 3577
+ DCW -2495
+ DCW -5443
+ DCW 10647
+ DCW -3434
+ DCW -4189
+ DCW 4118
+ DCW -3237
+ DCW 3535
+ DCW -5087
+ DCW -193
+ DCW 11004
+ DCW -21886
+ DCW 449
+ DCW 3791
+ DCW -16258
+ DCW 18149
+ DCW 2021
+ DCW -8291
+ DCW -231
+ DCW -8244
+ DCW 7225
+ DCW 4382
+ DCW -809
+ DCW 6546
+ DCW -7376
+ DCW -4512
+ DCW 5766
+ DCW -4122
+ DCW -281
+ DCW 1547
+ DCW 910
+ DCW -2680
+ DCW -7108
+ DCW 10131
+ DCW 3174
+ DCW -10408
+ DCW 10823
+ DCW -5611
+ DCW -10467
+ DCW 16074
+ DCW -956
+ DCW 1866
+ DCW 1589
+ DCW -4789
+ DCW -348
+ DCW -2743
+ DCW 15575
+ DCW 2847
+ DCW -7116
+ DCW 9553
+ DCW -5015
+ DCW -4223
+ DCW 10706
+ DCW -6752
+ DCW 1459
+ DCW -377
+ DCW -15130
+ DCW 12920
+ DCW 2483
+ DCW 46
+ DCW 15126
+ DCW -12639
+ DCW -10446
+ DCW 3233
+ DCW -2386
+ DCW 1942
+ DCW 9687
+ DCW 4235
+ DCW -12564
+ DCW -2185
+ DCW 12442
+ DCW -4592
+ DCW -730
+ DCW 4051
+ DCW -14120
+ DCW 2382
+ DCW 6424
+ DCW -3946
+ DCW 7460
+ DCW -2814
+ DCW -2768
+ DCW -1757
+ DCW -4726
+ DCW 5343
+ DCW -5137
+ DCW -1837
+ DCW -407
+ DCW -3606
+ DCW 8303
+ DCW -5217
+ DCW 3548
+ DCW 9880
+ DCW -20695
+ DCW 1925
+ DCW 9632
+ DCW -12597
+ DCW 12677
+ DCW 4848
+ DCW -13797
+ DCW 6588
+ DCW 2059
+ DCW -6869
+ DCW 6324
+ DCW 2088
+ DCW -1614
+ DCW 742
+ DCW -2382
+ DCW 4210
+ DCW 71
+ DCW -210
+ DCW 3443
+ DCW -1078
+ DCW -3934
+ DCW -3594
+ DCW 8005
+ DCW -319
+ DCW -5493
+ DCW 7682
+ DCW -9066
+ DCW -6169
+ DCW 10241
+ DCW -3921
+ DCW -164
+ DCW 5171
+ DCW 897
+ DCW -373
+ DCW -4659
+ DCW 151
+ DCW 650
+ DCW -3757
+ DCW 9863
+ DCW 7678
+ DCW -5879
+ DCW 5158
+ DCW -4433
+ DCW -5275
+ DCW -264
+ DCW -4680
+ DCW 2696
+ DCW -1724
+ DCW 7309
+ DCW 5946
+ DCW -5821
+ DCW -1975
+ DCW 910
+ DCW -482
+ DCW -1677
+ DCW 3070
+ DCW 717
+ DCW -4793
+ DCW 1744
+ DCW 3791
+ DCW -1866
+ DCW 2826
+ DCW 1220
+ DCW -3783
+ DCW -776
+ DCW -4495
+ DCW -751
+ DCW 2873
+ DCW -2734
+ DCW 8936
+ DCW -2160
+ DCW -9507
+ DCW 9297
+ DCW -4843
+ DCW -4537
+ DCW 6248
+ DCW -176
+ DCW -3757
+ DCW 2864
+ DCW 5175
+ DCW -4017
+ DCW 1044
+ DCW -1090
+ DCW -3166
+ DCW -143
+ DCW 1568
+ DCW 1170
+ DCW 8
+ DCW 4177
+ DCW -2944
+ DCW -3133
+ DCW -3028
+ DCW 5187
+ DCW 5200
+ DCW -8697
+ DCW 5883
+ DCW -1166
+ DCW -7053
+ DCW 692
+ DCW 2709
+ DCW 7351
+ DCW -7984
+ DCW 88
+ DCW 3636
+ DCW -923
+ DCW 5393
+ DCW 2365
+ DCW -7733
+ DCW -4244
+ DCW 6043
+ DCW -8827
+ DCW 3699
+ DCW 5552
+ DCW -1598
+ DCW -5045
+ DCW -3183
+ DCW 8253
+ DCW -5833
+ DCW 470
+ DCW 6328
+ DCW 3434
+ DCW -9142
+ DCW 730
+ DCW 583
+ DCW -1447
+ DCW 12027
+ DCW -5833
+ DCW 1786
+ DCW -11029
+ DCW -2147
+ DCW 7909
+ DCW -8253
+ DCW 8995
+ DCW -805
+ DCW -3174
+ DCW 3074
+ DCW -55
+ DCW -1355
+ DCW -1967
+ DCW 3636
+ DCW -2491
+ DCW 5401
+ DCW -1556
+ DCW -3904
+ DCW 6542
+ DCW -3279
+ DCW 3229
+ DCW -6047
+ DCW -2420
+ DCW 4114
+ DCW 927
+ DCW 1468
+ DCW -2181
+ DCW 3573
+ DCW -9649
+ DCW 2134
+ DCW 4621
+ DCW -956
+ DCW 1623
+ DCW -7351
+ DCW 3900
+ DCW 310
+ DCW 1979
+ DCW 2776
+ DCW -3707
+ DCW 1136
+ DCW -566
+ DCW 2080
+ DCW -2558
+ DCW 4563
+ DCW 814
+ DCW -7506
+ DCW 4286
+ DCW -2688
+ DCW 1401
+ DCW 1082
+ DCW 3212
+ DCW 2244
+ DCW -1925
+ DCW -814
+ DCW -2340
+ DCW 4986
+ DCW -7825
+ DCW 7183
+ DCW 1996
+ DCW -6055
+ DCW 7938
+ DCW -6798
+ DCW 709
+ DCW 1451
+ DCW -1879
+ DCW -1308
+ DCW -159
+ DCW 1002
+ DCW -2550
+ DCW 4843
+ DCW 2294
+ DCW 2231
+ DCW -7997
+ DCW -5066
+ DCW 4827
+ DCW -2466
+ DCW 6462
+ DCW -4315
+ DCW -671
+ DCW -277
+ DCW 1162
+ DCW 10194
+ DCW -9226
+ DCW 3154
+ DCW -7414
+ DCW -4043
+ DCW 8223
+ DCW 2575
+ DCW 6349
+ DCW -7636
+ DCW 268
+ DCW -113
+ DCW -2671
+ DCW -2239
+ DCW 6362
+ DCW 117
+ DCW -5137
+ DCW 8270
+ DCW -8718
+ DCW 4894
+ DCW 1162
+ DCW -4835
+ DCW 7158
+ DCW -9477
+ DCW 558
+ DCW -134
+ DCW 1581
+ DCW 7611
+ DCW -876
+ DCW -5053
+ DCW -5254
+ DCW 6127
+ DCW -2562
+ DCW 4286
+ DCW 1342
+ DCW -1036
+ DCW 646
+ DCW -6055
+ DCW 6013
+ DCW -3992
+ DCW 6718
+ DCW -2608
+ DCW -4697
+ DCW 5078
+ DCW -5808
+ DCW 9834
+ DCW -2290
+ DCW -260
+ DCW 210
+ DCW -13713
+ DCW 4483
+ DCW 8337
+ DCW 2151
+ DCW -457
+ DCW -268
+ DCW -4621
+ DCW 1212
+ DCW 839
+ DCW -3099
+ DCW 6533
+ DCW -10823
+ DCW 5691
+ DCW 2621
+ DCW -2889
+ DCW 11616
+ DCW -12325
+ DCW 956
+ DCW -1493
+ DCW -138
+ DCW 667
+ DCW -348
+ DCW 8228
+ DCW -164
+ DCW 369
+ DCW -5473
+ DCW 2126
+ DCW -4667
+ DCW 1942
+ DCW 2432
+ DCW -2634
+ DCW 3263
+ DCW -7322
+ DCW 8924
+ DCW 2285
+ DCW -2206
+ DCW 3149
+ DCW -15306
+ DCW 7829
+ DCW -1640
+ DCW -8
+ DCW 8836
+ DCW -7896
+ DCW 9574
+ DCW -13818
+ DCW 5603
+ DCW -331
+ DCW 6315
+ DCW 3409
+ DCW -18900
+ DCW 16606
+ DCW -12648
+ DCW 16820
+ DCW -2038
+ DCW -3154
+ DCW 11826
+ DCW -24704
+ DCW 5749
+ DCW -445
+ DCW 8400
+ DCW 4500
+ DCW -461
+ DCW -5883
+ DCW -8207
+ DCW 4990
+ DCW 176
+ DCW 15151
+ DCW -1543
+ DCW -7926
+ DCW -5045
+ DCW -4084
+ DCW 3518
+ DCW 6747
+ DCW 8718
+ DCW -4064
+ DCW -344
+ DCW -14421
+ DCW -1476
+ DCW 7540
+ DCW 2592
+ DCW 15700
+ DCW -10761
+ DCW -5561
+ DCW -2923
+ DCW 2478
+ DCW 9721
+ DCW 5242
+ DCW -277
+ DCW -11209
+ DCW -1120
+ DCW -9469
+ DCW 6030
+ DCW 5821
+ DCW 2969
+ DCW 3497
+ DCW -10140
+ DCW -159
+ DCW -5615
+ DCW 4701
+ DCW 8060
+ DCW 2139
+ DCW 289
+ DCW -12010
+ DCW -2856
+ DCW -1631
+ DCW 7192
+ DCW 7796
+ DCW -2885
+ DCW 3275
+ DCW -12434
+ DCW 575
+ DCW 4374
+ DCW 1652
+ DCW 7615
+ DCW -1526
+ DCW -1833
+ DCW -9733
+ DCW 4357
+ DCW -6471
+ DCW 6500
+ DCW 14300
+ DCW -10987
+ DCW 1535
+ DCW -7863
+ DCW -2696
+ DCW 5556
+ DCW 6840
+ DCW 5359
+ DCW -6034
+ DCW -667
+ DCW -8156
+ DCW 3028
+ DCW 4957
+ DCW 2634
+ DCW 5984
+ DCW -7217
+ DCW 1053
+ DCW -7972
+ DCW 1526
+ DCW 7435
+ DCW 2826
+ DCW 5883
+ DCW -9289
+ DCW -3619
+ DCW -5305
+ DCW 5057
+ DCW 6907
+ DCW 4588
+ DCW -327
+ DCW -11725
+ DCW 319
+ DCW -4252
+ DCW 5514
+ DCW 9997
+ DCW -465
+ DCW -1778
+ DCW -6957
+ DCW -5053
+ DCW -1015
+ DCW 7670
+ DCW 5347
+ DCW 1111
+ DCW -2940
+ DCW -12430
+ DCW 579
+ DCW 4227
+ DCW 8110
+ DCW 5460
+ DCW -5808
+ DCW -7938
+ DCW -7511
+ DCW 5133
+ DCW 3980
+ DCW 10853
+ DCW 612
+ DCW -7846
+ DCW -4885
+ DCW -7242
+ DCW 7167
+ DCW 3338
+ DCW 7804
+ DCW -1283
+ DCW -8584
+ DCW -3795
+ DCW -2944
+ DCW 9146
+ DCW 3380
+ DCW 5946
+ DCW -7662
+ DCW -10773
+ DCW 1422
+ DCW 38
+ DCW 12996
+ DCW 3481
+ DCW -721
+ DCW -8249
+ DCW -6907
+ DCW 4806
+ DCW 1132
+ DCW 10165
+ DCW -549
+ DCW -2210
+ DCW -5850
+ DCW -4755
+ DCW 5548
+ DCW 1153
+ DCW 9410
+ DCW -1988
+ DCW -5615
+ DCW -4839
+ DCW -3887
+ DCW 6978
+ DCW 3577
+ DCW 6907
+ DCW -4118
+ DCW -4827
+ DCW -4412
+ DCW -1824
+ DCW 10773
+ DCW -428
+ DCW 3292
+ DCW -3091
+ DCW -5124
+ DCW -1883
+ DCW 1174
+ DCW 4751
+ DCW 168
+ DCW 7343
+ DCW -7817
+ DCW -3057
+ DCW 1258
+ DCW -3422
+ DCW 7049
+ DCW 3808
+ DCW -549
+ DCW -5363
+ DCW -2814
+ DCW -1069
+ DCW 4269
+ DCW 5351
+ DCW -1833
+ DCW 772
+ DCW -5452
+ DCW -1535
+ DCW 1984
+ DCW 96
+ DCW 6546
+ DCW -3187
+ DCW -143
+ DCW -3275
+ DCW -2772
+ DCW 2659
+ DCW 604
+ DCW 5309
+ DCW -3443
+ DCW -2629
+ DCW -2625
+ DCW 3485
+ DCW -935
+ DCW 369
+ DCW 4403
+ DCW -1040
+ DCW 1816
+ DCW -5359
+ DCW 1069
+ DCW -1245
+ DCW 3552
+ DCW 2227
+ DCW -7037
+ DCW 3770
+ DCW -2420
+ DCW -3112
+ DCW 7162
+ DCW 663
+ DCW -3451
+ DCW -159
+ DCW -1338
+ DCW -1258
+ DCW 4277
+ DCW 377
+ DCW -549
+ DCW 2394
+ DCW -4751
+ DCW 1266
+ DCW -88
+ DCW 3795
+ DCW 2541
+ DCW -34
+ DCW -264
+ DCW -5389
+ DCW 2432
+ DCW -407
+ DCW 5934
+ DCW 117
+ DCW -2004
+ DCW -2348
+ DCW -4877
+ DCW 3573
+ DCW 1128
+ DCW 4227
+ DCW 1099
+ DCW -5481
+ DCW -5162
+ DCW 507
+ DCW 3200
+ DCW 4575
+ DCW 3711
+ DCW -5556
+ DCW -4424
+ DCW 1178
+ DCW -1501
+ DCW 6131
+ DCW 1401
+ DCW -2768
+ DCW -600
+ DCW -3388
+ DCW 226
+ DCW 923
+ DCW 5959
+ DCW -2004
+ DCW 1673
+ DCW -3024
+ DCW -5800
+ DCW 4298
+ DCW -348
+ DCW 4483
+ DCW 1107
+ DCW -3053
+ DCW -3141
+ DCW -1476
+ DCW 2516
+ DCW 3711
+ DCW 335
+ DCW -2634
+ DCW -3179
+ DCW -1820
+ DCW 2009
+ DCW 5103
+ DCW 214
+ DCW -642
+ DCW 17
+ DCW -2994
+ DCW 939
+ DCW -960
+ DCW 3351
+ DCW 1950
+ DCW 1208
+ DCW -2818
+ DCW -3011
+ DCW 2151
+ DCW -470
+ DCW 2592
+ DCW 382
+ DCW -1392
+ DCW -2608
+ DCW -541
+ DCW -763
+ DCW 3439
+ DCW 2151
+ DCW -843
+ DCW -952
+ DCW -1975
+ DCW 432
+ DCW -252
+ DCW 1329
+ DCW 1132
+ DCW 830
+ DCW -1786
+ DCW -784
+ DCW -1757
+ DCW 1652
+ DCW 2973
+ DCW 533
+ DCW -486
+ DCW -1115
+ DCW -2717
+ DCW -4
+ DCW 3124
+ DCW -1069
+ DCW 2239
+ DCW -1396
+ DCW -927
+ DCW -985
+ DCW 1162
+ DCW 159
+ DCW 562
+ DCW 2613
+ DCW -3401
+ DCW 8
+ DCW -2080
+ DCW 218
+ DCW 3552
+ DCW 1329
+ DCW 252
+ DCW -923
+ DCW -3770
+ DCW -386
+ DCW 2420
+ DCW 2013
+ DCW 1879
+ DCW -839
+ DCW -1963
+ DCW -579
+ DCW -1254
+ DCW 147
+ DCW 4152
+ DCW -700
+ DCW 445
+ DCW -1573
+ DCW -2046
+ DCW 1346
+ DCW 3128
+ DCW 1799
+ DCW -197
+ DCW -2956
+ DCW -4781
+ DCW 1837
+ DCW 1996
+ DCW 3938
+ DCW 1153
+ DCW -3489
+ DCW -2692
+ DCW 1371
+ DCW -495
+ DCW 2227
+ DCW 3611
+ DCW -3170
+ DCW 151
+ DCW -1401
+ DCW -2139
+ DCW 2424
+ DCW 3133
+ DCW 122
+ DCW 201
+ DCW -3191
+ DCW -3682
+ DCW 1195
+ DCW 3346
+ DCW 2675
+ DCW 734
+ DCW -2990
+ DCW -1535
+ DCW 960
+ DCW -298
+ DCW 2856
+ DCW -1015
+ DCW -411
+ DCW -1115
+ DCW -151
+ DCW 1346
+ DCW 361
+ DCW 1166
+ DCW 369
+ DCW 721
+ DCW -3812
+ DCW -1732
+ DCW 688
+ DCW 2634
+ DCW 4126
+ DCW -348
+ DCW -3325
+ DCW -1120
+ DCW -1434
+ DCW 1225
+ DCW 3325
+ DCW -746
+ DCW -1786
+ DCW -1053
+ DCW -633
+ DCW 797
+ DCW 2109
+ DCW 189
+ DCW 1610
+ DCW -478
+ DCW -1304
+ DCW -1241
+ DCW -315
+ DCW 654
+ DCW 2558
+ DCW 1367
+ DCW -2378
+ DCW -1589
+ DCW -2441
+ DCW 3590
+ DCW 2856
+ DCW -92
+ DCW -2084
+ DCW -1061
+ DCW 415
+ DCW 1011
+ DCW 432
+ DCW -2290
+ DCW -143
+ DCW -4592
+ DCW -4789
+ DCW -130
+ DCW 1552
+ DCW 4164
+ DCW 14208
+ DCW 12434
+ DCW 7733
+ DCW 1728
+ DCW -10396
+ DCW -6307
+ DCW -7259
+ DCW -8437
+ DCW -4420
+ DCW -2680
+ DCW 1854
+ DCW 2688
+ DCW 6911
+ DCW 7611
+ DCW -3304
+ DCW -3128
+ DCW 0
+ DCW -2474
+ DCW -25
+ DCW 5204
+ DCW -3837
+ DCW -6596
+ DCW 4495
+ DCW -1703
+ DCW 2000
+ DCW 3384
+ DCW -1774
+ DCW 2269
+ DCW 4131
+ DCW -2625
+ DCW -6022
+ DCW 1178
+ DCW -3309
+ DCW 2281
+ DCW 4013
+ DCW -2789
+ DCW 1006
+ DCW 298
+ DCW 1954
+ DCW 881
+ DCW -839
+ DCW -2114
+ DCW -4852
+ DCW -2709
+ DCW 1061
+ DCW 2034
+ DCW 3585
+ DCW 5774
+ DCW -1971
+ DCW 4
+ DCW -1078
+ DCW -512
+ DCW -2600
+ DCW -1006
+ DCW -2613
+ DCW -4252
+ DCW 8458
+ DCW -7074
+ DCW 15009
+ DCW -327
+ DCW -11809
+ DCW 7846
+ DCW -9213
+ DCW 134
+ DCW -1325
+ DCW 1770
+ DCW -839
+ DCW 7498
+ DCW 6466
+ DCW -2231
+ DCW -646
+ DCW -8291
+ DCW 1874
+ DCW 9666
+ DCW -11956
+ DCW -5049
+ DCW 3103
+ DCW -6253
+ DCW 18829
+ DCW -415
+ DCW -1623
+ DCW 1803
+ DCW -4315
+ DCW -6974
+ DCW -3590
+ DCW -587
+ DCW -1900
+ DCW 12396
+ DCW -4365
+ DCW 8312
+ DCW 2332
+ DCW -3929
+ DCW -2206
+ DCW -3724
+ DCW -2168
+ DCW -1455
+ DCW -717
+ DCW -4470
+ DCW 13654
+ DCW 4072
+ DCW -80
+ DCW 587
+ DCW -7733
+ DCW -3158
+ DCW 4651
+ DCW -3346
+ DCW 696
+ DCW 2332
+ DCW -2197
+ DCW 4164
+ DCW 570
+ DCW -2042
+ DCW 1619
+ DCW 0
+ DCW -3975
+ DCW 2554
+ DCW -6068
+ DCW 2864
+ DCW 5347
+ DCW 2239
+ DCW 3137
+ DCW -2348
+ DCW -6819
+ DCW -2445
+ DCW 5967
+ DCW -2545
+ DCW 5816
+ DCW -474
+ DCW -1812
+ DCW 3917
+ DCW 528
+ DCW -2868
+ DCW 1082
+ DCW -918
+ DCW -1501
+ DCW 1719
+ DCW -4458
+ DCW 1413
+ DCW 1338
+ DCW 1954
+ DCW -1040
+ DCW 2499
+ DCW -3581
+ DCW 226
+ DCW 1895
+ DCW -969
+ DCW 2420
+ DCW -2202
+ DCW 231
+ DCW -1057
+ DCW 1128
+ DCW -2344
+ DCW 1006
+ DCW -1698
+ DCW 4583
+ DCW 147
+ DCW -1979
+ DCW 1916
+ DCW -4365
+ DCW 3166
+ DCW 1027
+ DCW -2315
+ DCW -3460
+ DCW 2592
+ DCW 4097
+ DCW 3325
+ DCW -2365
+ DCW -3007
+ DCW -3154
+ DCW -394
+ DCW 315
+ DCW -2428
+ DCW 4122
+ DCW 2617
+ DCW 2483
+ DCW 2147
+ DCW -4793
+ DCW -4596
+ DCW 3246
+ DCW -2055
+ DCW 3996
+ DCW -180
+ DCW -4198
+ DCW 2093
+ DCW 1841
+ DCW 2923
+ DCW 608
+ DCW -1329
+ DCW -4630
+ DCW -3317
+ DCW -1095
+ DCW 3497
+ DCW 1908
+ DCW 3216
+ DCW 1308
+ DCW 671
+ DCW -3694
+ DCW -1975
+ DCW -2751
+ DCW -1199
+ DCW 7280
+ DCW -1778
+ DCW 923
+ DCW -906
+ DCW 424
+ DCW 2839
+ DCW 1594
+ DCW -3103
+ DCW -5322
+ DCW -382
+ DCW 1145
+ DCW 2009
+ DCW 5099
+ DCW 2017
+ DCW -2004
+ DCW 168
+ DCW -4462
+ DCW -2227
+ DCW -2780
+ DCW 256
+ DCW 545
+ DCW 3887
+ DCW 1673
+ DCW -684
+ DCW 2407
+ DCW -168
+ DCW 1199
+ DCW -5062
+ DCW -2508
+ DCW -1229
+ DCW 361
+ DCW 5213
+ DCW 2076
+ DCW -1690
+ DCW 3774
+ DCW -3510
+ DCW -784
+ DCW 1078
+ DCW -6957
+ DCW 1841
+ DCW 2432
+ DCW 2218
+ DCW -1199
+ DCW 143
+ DCW -960
+ DCW 3552
+ DCW -545
+ DCW -3720
+ DCW 1132
+ DCW -893
+ DCW 1334
+ DCW 3795
+ DCW 1635
+ DCW -5355
+ DCW 2566
+ DCW -3233
+ DCW -814
+ DCW 2973
+ DCW -3426
+ DCW -621
+ DCW 2160
+ DCW -445
+ DCW 449
+ DCW 1212
+ DCW -3510
+ DCW 4764
+ DCW -2449
+ DCW 1216
+ DCW 4168
+ DCW -4927
+ DCW -566
+ DCW 4143
+ DCW -1581
+ DCW -1874
+ DCW 4705
+ DCW -7129
+ DCW -302
+ DCW 6844
+ DCW -2025
+ DCW -1338
+ DCW 1724
+ DCW 2059
+ DCW -1099
+ DCW -6219
+ DCW 243
+ DCW 4089
+ DCW -3036
+ DCW 2562
+ DCW 5200
+ DCW -5015
+ DCW -3254
+ DCW 7112
+ DCW -2743
+ DCW -1552
+ DCW 1623
+ DCW -4613
+ DCW 562
+ DCW 3384
+ DCW 5175
+ DCW -512
+ DCW -4223
+ DCW -3711
+ DCW 5145
+ DCW -4621
+ DCW -4177
+ DCW 9721
+ DCW -5363
+ DCW 1296
+ DCW 7766
+ DCW -2889
+ DCW -4428
+ DCW 252
+ DCW -491
+ DCW 2583
+ DCW -3124
+ DCW -1027
+ DCW 5091
+ DCW -5200
+ DCW 4235
+ DCW 6663
+ DCW -3598
+ DCW -8093
+ DCW 2017
+ DCW 1187
+ DCW -3967
+ DCW 2273
+ DCW -92
+ DCW 7091
+ DCW -386
+ DCW -4122
+ DCW 4630
+ DCW -7750
+ DCW 1958
+ DCW 3707
+ DCW -3757
+ DCW -667
+ DCW -1191
+ DCW 6513
+ DCW -1807
+ DCW 2927
+ DCW -4206
+ DCW -2956
+ DCW -709
+ DCW 445
+ DCW 7993
+ DCW -9758
+ DCW 4286
+ DCW 1942
+ DCW 705
+ DCW 2264
+ DCW -3200
+ DCW -1132
+ DCW -2067
+ DCW 3174
+ DCW -3254
+ DCW 1552
+ DCW -2025
+ DCW 923
+ DCW 6500
+ DCW -4386
+ DCW -2197
+ DCW -2189
+ DCW 4827
+ DCW 2021
+ DCW -1245
+ DCW 3430
+ DCW -9318
+ DCW 1233
+ DCW 1363
+ DCW 3099
+ DCW -881
+ DCW -7561
+ DCW 6395
+ DCW 1040
+ DCW 4005
+ DCW -2692
+ DCW -1552
+ DCW -3284
+ DCW 1874
+ DCW 5301
+ DCW -6055
+ DCW -1237
+ DCW -4147
+ DCW 6911
+ DCW 2722
+ DCW -499
+ DCW 2235
+ DCW -8387
+ DCW 1518
+ DCW 4915
+ DCW -1761
+ DCW -3426
+ DCW 38
+ DCW 2164
+ DCW 2877
+ DCW 4185
+ DCW -8324
+ DCW 1862
+ DCW -1816
+ DCW -512
+ DCW 8710
+ DCW -7737
+ DCW 5506
+ DCW -3770
+ DCW 5238
+ DCW -2160
+ DCW -6198
+ DCW 5020
+ DCW -5233
+ DCW 6118
+ DCW -11721
+ DCW 14245
+ DCW -1522
+ DCW -4936
+ DCW 12715
+ DCW -13189
+ DCW 7691
+ DCW -11637
+ DCW 306
+ DCW 6731
+ DCW -524
+ DCW 92
+ DCW -3099
+ DCW 15080
+ DCW -5640
+ DCW 2051
+ DCW -16275
+ DCW 2445
+ DCW 9414
+ DCW -12400
+ DCW 20192
+ DCW -13646
+ DCW 6332
+ DCW -1329
+ DCW -4722
+ DCW 6441
+ DCW -16321
+ DCW 16028
+ DCW -13323
+ DCW 14929
+ DCW -80
+ DCW -9431
+ DCW 9037
+ DCW -12270
+ DCW 15013
+ DCW -11742
+ DCW 7263
+ DCW -8538
+ DCW 4416
+ DCW 3015
+ DCW -9171
+ DCW 15814
+ DCW -19336
+ DCW 20716
+ DCW -5414
+ DCW -4441
+ DCW -965
+ DCW -8249
+ DCW 13495
+ DCW -12975
+ DCW 7628
+ DCW -13046
+ DCW 6185
+ DCW 8056
+ DCW 9381
+ DCW 19479
+ DCW -28570
+ DCW -1694
+ DCW -12920
+ DCW 1682
+ DCW 15713
+ DCW 2835
+ DCW 12371
+ DCW -17810
+ DCW 3481
+ DCW -13851
+ DCW 4906
+ DCW 9280
+ DCW -7272
+ DCW 13369
+ DCW -18036
+ DCW 10345
+ DCW -1233
+ DCW 474
+ DCW 1577
+ DCW -4382
+ DCW -3070
+ DCW -8194
+ DCW 19378
+ DCW -17214
+ DCW 9628
+ DCW -3007
+ DCW -1996
+ DCW 20313
+ DCW -22305
+ DCW 10291
+ DCW -9934
+ DCW -5196
+ DCW 13855
+ DCW 2940
+ DCW 4638
+ DCW -16153
+ DCW 2948
+ DCW -3195
+ DCW 15466
+ DCW 1711
+ DCW -8014
+ DCW 5213
+ DCW -22305
+ DCW 11700
+ DCW -1044
+ DCW 6584
+ DCW -1610
+ DCW -5074
+ DCW 11205
+ DCW -4433
+ DCW 9075
+ DCW -16166
+ DCW 6202
+ DCW -5477
+ DCW 851
+ DCW 9398
+ DCW -18309
+ DCW 9352
+ DCW 2118
+ DCW 13570
+ DCW 2566
+ DCW -10899
+ DCW -8731
+ DCW -13654
+ DCW 11985
+ DCW 3044
+ DCW 4231
+ DCW 1053
+ DCW -3376
+ DCW 12509
+ DCW -5913
+ DCW 1724
+ DCW -5565
+ DCW -8630
+ DCW 927
+ DCW 1707
+ DCW 2537
+ DCW -1879
+ DCW 14677
+ DCW 755
+ DCW 4269
+ DCW -13734
+ DCW -8257
+ DCW 4290
+ DCW -6873
+ DCW 11855
+ DCW -4563
+ DCW 239
+ DCW -2319
+ DCW 8555
+ DCW 7112
+ DCW -9733
+ DCW -17
+ DCW -8685
+ DCW 4231
+ DCW -3359
+ DCW 386
+ DCW 9628
+ DCW -2776
+ DCW 10786
+ DCW -2143
+ DCW -4361
+ DCW -8379
+ DCW -6479
+ DCW 9347
+ DCW -2738
+ DCW 7200
+ DCW -4391
+ DCW 2122
+ DCW 6026
+ DCW -2919
+ DCW -4131
+ DCW -6563
+ DCW 3824
+ DCW -5192
+ DCW 6789
+ DCW -5384
+ DCW 7313
+ DCW 1749
+ DCW -5892
+ DCW 19135
+ DCW -16959
+ DCW -5510
+ DCW 2302
+ DCW -5737
+ DCW 11385
+ DCW -1573
+ DCW -2164
+ DCW 6429
+ DCW -2675
+ DCW -985
+ DCW 4265
+ DCW -7959
+ DCW -6018
+ DCW 9066
+ DCW -8060
+ DCW 10597
+ DCW 3355
+ DCW -19718
+ DCW 17835
+ DCW -2671
+ DCW 700
+ DCW 3871
+ DCW -9695
+ DCW -4407
+ DCW -17
+ DCW 872
+ DCW 5464
+ DCW 9574
+ DCW -16841
+ DCW 9192
+ DCW 75
+ DCW -9293
+ DCW 8702
+ DCW -2285
+ DCW -5301
+ DCW 7460
+ DCW -1518
+ DCW -9922
+ DCW 15097
+ DCW -5896
+ DCW -2294
+ DCW 10790
+ DCW -12266
+ DCW -474
+ DCW 8110
+ DCW -8748
+ DCW 12337
+ DCW -3690
+ DCW -14430
+ DCW 12643
+ DCW -5309
+ DCW -952
+ DCW 14585
+ DCW -8685
+ DCW -5921
+ DCW 9779
+ DCW -15629
+ DCW 6991
+ DCW 5871
+ DCW -7972
+ DCW 8026
+ DCW 92
+ DCW -5221
+ DCW 3590
+ DCW 734
+ DCW -7267
+ DCW 10287
+ DCW -11838
+ DCW -2654
+ DCW 13671
+ DCW -7804
+ DCW 3787
+ DCW 14581
+ DCW -15621
+ DCW -5036
+ DCW 8802
+ DCW -14556
+ DCW 10022
+ DCW 4579
+ DCW -6739
+ DCW 7842
+ DCW -4890
+ DCW -4282
+ DCW 13738
+ DCW -9037
+ DCW -1648
+ DCW 7246
+ DCW -15206
+ DCW 4118
+ DCW 11834
+ DCW -7339
+ DCW 5590
+ DCW 6580
+ DCW -19445
+ DCW 8328
+ DCW -4399
+ DCW -1124
+ DCW 9020
+ DCW -12375
+ DCW 6349
+ DCW 3636
+ DCW -2143
+ DCW 2462
+ DCW 10123
+ DCW -14652
+ DCW 1048
+ DCW 7267
+ DCW -18418
+ DCW 11847
+ DCW 2994
+ DCW -3564
+ DCW 13461
+ DCW -6991
+ DCW -6223
+ DCW 2852
+ DCW -6726
+ DCW 6890
+ DCW 4227
+ DCW -12090
+ DCW 2185
+ DCW 8584
+ DCW -10190
+ DCW 11272
+ DCW 2722
+ DCW -16896
+ DCW 9867
+ DCW -923
+ DCW 1044
+ DCW 3908
+ DCW -6596
+ DCW -696
+ DCW 5242
+ DCW -5259
+ DCW 2059
+ DCW 5456
+ DCW -11436
+ DCW 10786
+ DCW 340
+ DCW -12367
+ DCW 11209
+ DCW -906
+ DCW -7100
+ DCW 10660
+ DCW -4906
+ DCW -8177
+ DCW 8236
+ DCW -2722
+ DCW 5540
+ DCW 2583
+ DCW -15776
+ DCW 8106
+ DCW 2483
+ DCW -3632
+ DCW 13419
+ DCW -7603
+ DCW -8295
+ DCW 4772
+ DCW -595
+ DCW -2852
+ DCW 6970
+ DCW -3355
+ DCW -4697
+ DCW 8651
+ DCW -9758
+ DCW 2227
+ DCW 6701
+ DCW -7691
+ DCW 9670
+ DCW -5682
+ DCW -11318
+ DCW 12954
+ DCW -4588
+ DCW 2214
+ DCW 10794
+ DCW -13558
+ DCW -6429
+ DCW 5623
+ DCW 1614
+ DCW 1187
+ DCW 7435
+ DCW -8517
+ DCW -1635
+ DCW 4399
+ DCW -8664
+ DCW 10421
+ DCW -2856
+ DCW -3711
+ DCW 11285
+ DCW -9851
+ DCW -6655
+ DCW 9305
+ DCW -1296
+ DCW 1799
+ DCW 7116
+ DCW -13629
+ DCW -1535
+ DCW 7381
+ DCW -1786
+ DCW 7137
+ DCW -5137
+ DCW -8005
+ DCW 8391
+ DCW -2550
+ DCW 1602
+ DCW 8349
+ DCW -11566
+ DCW -3338
+ DCW 7586
+ DCW -3476
+ DCW 449
+ DCW 4940
+ DCW -10282
+ DCW 6039
+ DCW 6588
+ DCW -13260
+ DCW 4755
+ DCW -3598
+ DCW -1698
+ DCW 7590
+ DCW -4311
+ DCW -2646
+ DCW 6726
+ DCW 11377
+ DCW 2868
+ DCW -3170
+ DCW -10601
+ DCW 667
+ DCW -3657
+ DCW -5347
+ DCW 13453
+ DCW -6550
+ DCW -4235
+ DCW 2512
+ DCW -876
+ DCW 6475
+ DCW 1313
+ DCW -3539
+ DCW -55
+ DCW 2759
+ DCW -12539
+ DCW 7221
+ DCW 3858
+ DCW -8685
+ DCW 18896
+ DCW -8517
+ DCW -10102
+ DCW 11423
+ DCW -7125
+ DCW -1854
+ DCW 9913
+ DCW -9800
+ DCW -3460
+ DCW 9897
+ DCW -5309
+ DCW 7997
+ DCW 1002
+ DCW -13977
+ DCW 9846
+ DCW 1086
+ DCW -14451
+ DCW 8140
+ DCW 1195
+ DCW -4877
+ DCW 11612
+ DCW -6257
+ DCW -205
+ DCW 12903
+ DCW -13080
+ DCW -3149
+ DCW 5863
+ DCW -10387
+ DCW 5070
+ DCW 4064
+ DCW -3019
+ DCW 11398
+ DCW -2994
+ DCW -18292
+ DCW 12899
+ DCW 4303
+ DCW -12534
+ DCW 11712
+ DCW -8081
+ DCW -59
+ DCW 12572
+ DCW -9536
+ DCW 3996
+ DCW 4500
+ DCW -10203
+ DCW 2164
+ DCW 428
+ DCW -9100
+ DCW 9310
+ DCW 5179
+ DCW -6894
+ DCW 8190
+ DCW -5267
+ DCW -8806
+ DCW 11461
+ DCW -5598
+ DCW -608
+ DCW 6567
+ DCW -9242
+ DCW 3552
+ DCW 6923
+ DCW -3237
+ DCW 3388
+ DCW -5238
+ DCW -7611
+ DCW 6970
+ DCW -3065
+ DCW 2118
+ DCW 6970
+ DCW -3711
+ DCW -1128
+ DCW 1950
+ DCW -4470
+ DCW -1443
+ DCW 4533
+ DCW -2160
+ DCW 579
+ DCW -96
+ DCW -4412
+ DCW 1933
+ DCW 7821
+ DCW 1505
+ DCW -2692
+ DCW -6894
+ DCW -1929
+ DCW 2176
+ DCW -3049
+ DCW 7066
+ DCW 88
+ DCW -6806
+ DCW 6332
+ DCW -2256
+ DCW -2642
+ DCW 8127
+ DCW -6206
+ DCW -1749
+ DCW 3422
+ DCW -3267
+ DCW -977
+ DCW 2575
+ DCW -650
+ DCW 1002
+ DCW 3154
+ DCW -8781
+ DCW 5619
+ DCW 2642
+ DCW -7095
+ DCW 6437
+ DCW -3804
+ DCW -5284
+ DCW 6320
+ DCW -394
+ DCW 583
+ DCW 1304
+ DCW -2382
+ DCW 734
+ DCW -658
+ DCW -1518
+ DCW 319
+ DCW 1614
+ DCW -4617
+ DCW 6060
+ DCW -273
+ DCW -5439
+ DCW 6995
+ DCW -4466
+ DCW 746
+ DCW 4273
+ DCW -9024
+ DCW -130
+ DCW 9737
+ DCW -5204
+ DCW 126
+ DCW 3816
+ DCW -6999
+ DCW 5015
+ DCW 4843
+ DCW -7825
+ DCW 4340
+ DCW -2701
+ DCW -8890
+ DCW 10945
+ DCW -331
+ DCW 952
+ DCW 3242
+ DCW -6173
+ DCW 612
+ DCW 1652
+ DCW -4651
+ DCW 1317
+ DCW 3359
+ DCW -3862
+ DCW 2692
+ DCW -503
+ DCW 503
+ DCW 5024
+ DCW -1749
+ DCW -3254
+ DCW -524
+ DCW -7125
+ DCW 1287
+ DCW 9301
+ DCW -1032
+ DCW 205
+ DCW -201
+ DCW -6714
+ DCW 927
+ DCW 4932
+ DCW -4953
+ DCW 4214
+ DCW -1036
+ DCW -5070
+ DCW 5963
+ DCW -1032
+ DCW -864
+ DCW 3137
+ DCW -3325
+ DCW -977
+ DCW -914
+ DCW -3866
+ DCW 5816
+ DCW 1816
+ DCW -1489
+ DCW -319
+ DCW 273
+ DCW -2889
+ DCW 977
+ DCW 1749
+ DCW -96
+ DCW 1321
+ DCW -7142
+ DCW 3036
+ DCW 1371
+ DCW -1560
+ DCW 4785
+ DCW 159
+ DCW -1744
+ DCW 1166
+ DCW -5883
+ DCW -4483
+ DCW 9624
+ DCW 1602
+ DCW -3711
+ DCW 2801
+ DCW -2369
+ DCW -2051
+ DCW 4529
+ DCW -1879
+ DCW -4
+ DCW -1522
+ DCW -3632
+ DCW 2621
+ DCW 3497
+ DCW -688
+ DCW -285
+ DCW -608
+ DCW -3439
+ DCW 2839
+ DCW -2919
+ DCW 1640
+ DCW 3443
+ DCW -3820
+ DCW 1233
+ DCW -1820
+ DCW -2499
+ DCW 6131
+ DCW -419
+ DCW -3443
+ DCW 5108
+ DCW -4315
+ DCW -3804
+ DCW 7871
+ DCW -839
+ DCW -5049
+ DCW 4927
+ DCW -7225
+ DCW -512
+ DCW 8769
+ DCW -4835
+ DCW 2143
+ DCW 738
+ DCW -3854
+ DCW 2000
+ DCW 1220
+ DCW -4391
+ DCW 1799
+ DCW 2013
+ DCW -1967
+ DCW 1384
+ DCW -985
+ DCW -168
+ DCW 3749
+ DCW -650
+ DCW -2826
+ DCW 1199
+ DCW -3606
+ DCW 2348
+ DCW 1359
+ DCW -1858
+ DCW 2705
+ DCW -1740
+ DCW 671
+ DCW 3120
+ DCW -4684
+ DCW -3204
+ DCW 4286
+ DCW -2860
+ DCW 1589
+ DCW 5192
+ DCW -3728
+ DCW 1090
+ DCW 1531
+ DCW -6810
+ DCW 2407
+ DCW 3028
+ DCW -3925
+ DCW 3003
+ DCW 1313
+ DCW -2948
+ DCW -210
+ DCW 147
+ DCW 3133
+ DCW 3736
+ DCW -4437
+ DCW -2847
+ DCW -2671
+ DCW -625
+ DCW 1279
+ DCW 3187
+ DCW 1283
+ DCW -1132
+ DCW 277
+ DCW -1287
+ DCW 4730
+ DCW -2613
+ DCW 600
+ DCW 1199
+ DCW -3082
+ DCW -3766
+ DCW -4399
+ DCW 4458
+ DCW 6756
+ DCW 4529
+ DCW -1082
+ DCW 59
+ DCW -6626
+ DCW -8194
+ DCW 3929
+ DCW 4508
+ DCW -3200
+ DCW 554
+ DCW 1367
+ DCW 1170
+ DCW 3892
+ DCW 990
+ DCW -1774
+ DCW -5942
+ DCW -4038
+ DCW -1799
+ DCW 5468
+ DCW 4600
+ DCW 3229
+ DCW 1355
+ DCW -985
+ DCW -948
+ DCW -7041
+ DCW -2088
+ DCW 860
+ DCW -3770
+ DCW 2223
+ DCW 5548
+ DCW -818
+ DCW 6651
+ DCW -495
+ DCW -6647
+ DCW 524
+ DCW -5368
+ DCW -2399
+ DCW 5745
+ DCW 122
+ DCW -218
+ DCW 6303
+ DCW 679
+ DCW -29
+ DCW -1183
+ DCW -6156
+ DCW -3619
+ DCW 1027
+ DCW -600
+ DCW 2801
+ DCW 2877
+ DCW 969
+ DCW 6403
+ DCW -985
+ DCW -4223
+ DCW -3896
+ DCW -5246
+ DCW 491
+ DCW 3904
+ DCW 453
+ DCW 1099
+ DCW 2852
+ DCW 746
+ DCW 1526
+ DCW -201
+ DCW -5770
+ DCW -2143
+ DCW -1426
+ DCW -1245
+ DCW 7599
+ DCW -2600
+ DCW -1690
+ DCW 6517
+ DCW -2696
+ DCW 2088
+ DCW 2554
+ DCW -8953
+ DCW 2692
+ DCW 465
+ DCW -9578
+ DCW 6680
+ DCW 5804
+ DCW -1212
+ DCW 2118
+ DCW 2533
+ DCW -7024
+ DCW -1782
+ DCW 3342
+ DCW -3728
+ DCW -168
+ DCW -2466
+ DCW 889
+ DCW 1204
+ DCW 2843
+ DCW 7284
+ DCW -1443
+ DCW -5313
+ DCW -608
+ DCW -3875
+ DCW -2927
+ DCW 5896
+ DCW 1174
+ DCW -797
+ DCW 2587
+ DCW -1577
+ DCW -1858
+ DCW 1744
+ DCW 1715
+ DCW 1250
+ DCW -3355
+ DCW -5510
+ DCW -818
+ DCW 2365
+ DCW 1413
+ DCW 7393
+ DCW 1279
+ DCW -9981
+ DCW 1002
+ DCW 595
+ DCW -4630
+ DCW 2705
+ DCW 3258
+ DCW -1132
+ DCW 4785
+ DCW 4667
+ DCW -2034
+ DCW -2478
+ DCW -2390
+ DCW -1287
+ DCW -5678
+ DCW -6383
+ DCW 4881
+ DCW 5036
+ DCW 717
+ DCW 8207
+ DCW -285
+ DCW -6110
+ DCW -1778
+ DCW -2290
+ DCW -738
+ DCW -369
+ DCW 977
+ DCW 939
+ DCW -520
+ DCW 1468
+ DCW 7355
+ DCW -990
+ DCW -4013
+ DCW -197
+ DCW -6957
+ DCW -2638
+ DCW 4168
+ DCW 2638
+ DCW 164
+ DCW 3174
+ DCW 2650
+ DCW -2730
+ DCW -155
+ DCW -356
+ DCW -981
+ DCW -3300
+ DCW -3128
+ DCW 2940
+ DCW -2650
+ DCW 3137
+ DCW 8282
+ DCW 1216
+ DCW -2994
+ DCW -4462
+ DCW -3296
+ DCW -1103
+ DCW 554
+ DCW 55
+ DCW 3107
+ DCW -2717
+ DCW 507
+ DCW 2822
+ DCW 2235
+ DCW 3451
+ DCW -3195
+ DCW -2772
+ DCW -2914
+ DCW 411
+ DCW -113
+ DCW 1879
+ DCW -927
+ DCW -2504
+ DCW 5301
+ DCW 1958
+ DCW -3145
+ DCW -1929
+ DCW -3422
+ DCW -1526
+ DCW 3984
+ DCW -361
+ DCW 742
+ DCW 1325
+ DCW -42
+ DCW -8
+ DCW 1480
+ DCW -1757
+ DCW -3263
+ DCW 2218
+ DCW -621
+ DCW 994
+ DCW 1933
+ DCW -3418
+ DCW -235
+ DCW 3267
+ DCW -3468
+ DCW 147
+ DCW -138
+ DCW 256
+ DCW -889
+ DCW -3409
+ DCW 6869
+ DCW -4101
+ DCW -3254
+ DCW 7984
+ DCW -2852
+ DCW 185
+ DCW 3242
+ DCW -3208
+ DCW -1703
+ DCW -1933
+ DCW 3489
+ DCW -71
+ DCW -1099
+ DCW 3548
+ DCW 1065
+ DCW -4722
+ DCW -1535
+ DCW 4843
+ DCW -1929
+ DCW -1396
+ DCW -1157
+ DCW -994
+ DCW -2126
+ DCW 6257
+ DCW 3271
+ DCW -3162
+ DCW 499
+ DCW -1434
+ DCW -1715
+ DCW -38
+ DCW 2315
+ DCW -3258
+ DCW 1002
+ DCW -784
+ DCW 2696
+ DCW -453
+ DCW -2545
+ DCW 3745
+ DCW -721
+ DCW -1325
+ DCW -2839
+ DCW -2617
+ DCW -2046
+ DCW 5842
+ DCW 5183
+ DCW -717
+ DCW -3036
+ DCW 554
+ DCW -1292
+ DCW 1732
+ DCW 1371
+ DCW -2973
+ DCW -2017
+ DCW -2025
+ DCW 7041
+ DCW -415
+ DCW -126
+ DCW -59
+ DCW 411
+ DCW -1430
+ DCW -3254
+ DCW 1128
+ DCW -2181
+ DCW 1602
+ DCW 3212
+ DCW 1581
+ DCW -3162
+ DCW 2332
+ DCW -512
+ DCW 356
+ DCW -1346
+ DCW -5774
+ DCW 386
+ DCW 2407
+ DCW 6131
+ DCW 1812
+ DCW 633
+ DCW -3070
+ DCW -2776
+ DCW -3778
+ DCW -1334
+ DCW -717
+ DCW 411
+ DCW 4428
+ DCW -361
+ DCW 3887
+ DCW -751
+ DCW -2302
+ DCW -1568
+ DCW -1904
+ DCW -1958
+ DCW -860
+ DCW 7414
+ DCW 5292
+ DCW -486
+ DCW -675
+ DCW -3657
+ DCW -5657
+ DCW -1770
+ DCW -130
+ DCW 3091
+ DCW -1338
+ DCW 2193
+ DCW 6651
+ DCW -1128
+ DCW -2348
+ DCW -3762
+ DCW -461
+ DCW -1044
+ DCW -2365
+ DCW 2361
+ DCW 2881
+ DCW 872
+ DCW 2357
+ DCW 876
+ DCW -1652
+ DCW -604
+ DCW -7410
+ DCW -2302
+ DCW 4806
+ DCW 2906
+ DCW 486
+ DCW 365
+ DCW 4105
+ DCW -352
+ DCW -2034
+ DCW -4013
+ DCW -2281
+ DCW -1577
+ DCW -432
+ DCW 4453
+ DCW 1816
+ DCW 2776
+ DCW -1497
+ DCW -1019
+ DCW 193
+ DCW -4399
+ DCW 264
+ DCW 579
+ DCW -264
+ DCW 2797
+ DCW -742
+ DCW 1560
+ DCW 2910
+ DCW -1426
+ DCW -377
+ DCW -3602
+ DCW -2277
+ DCW 138
+ DCW -25
+ DCW 1874
+ DCW 1984
+ DCW -881
+ DCW 520
+ DCW 1522
+ DCW -1539
+ DCW -797
+ DCW -4269
+ DCW 2663
+ DCW 1598
+ DCW -4139
+ DCW -113
+ DCW 2868
+ DCW 3372
+ DCW -1631
+ DCW 1346
+ DCW -3644
+ DCW -3493
+ DCW 2013
+ DCW 3003
+ DCW -2931
+ DCW -5804
+ DCW 10756
+ DCW 7867
+ DCW -9918
+ DCW -11847
+ DCW 11561
+ DCW 11998
+ DCW -9326
+ DCW -6689
+ DCW -2130
+ DCW 4533
+ DCW 5103
+ DCW -3485
+ DCW -1967
+ DCW 1619
+ DCW 1598
+ DCW -3661
+ DCW -3837
+ DCW 7628
+ DCW 2747
+ DCW -3304
+ DCW -1170
+ DCW -4005
+ DCW 1682
+ DCW 5418
+ DCW 633
+ DCW -5531
+ DCW -675
+ DCW 419
+ DCW 541
+ DCW 2583
+ DCW -3091
+ DCW 3497
+ DCW 2130
+ DCW -1468
+ DCW -4588
+ DCW -5171
+ DCW 8068
+ DCW 2537
+ DCW -2004
+ DCW 1258
+ DCW -3560
+ DCW -4156
+ DCW 2529
+ DCW 6248
+ DCW -201
+ DCW 575
+ DCW -4609
+ DCW -306
+ DCW -11905
+ DCW -18430
+ DCW 32767
+ DCW 20728
+ DCW -32768
+ DCW -20229
+ DCW 32767
+ DCW 32767
+ DCW -32768
+ DCW -32768
+ DCW 24939
+ DCW 32767
+ DCW 2868
+ DCW -32768
+ DCW 2332
+ DCW 27904
+ DCW -3300
+ DCW 1992
+ DCW -28763
+ DCW -814
+ DCW 32767
+ DCW -7783
+ DCW -13818
+ DCW -9687
+ DCW 5577
+ DCW 21085
+ DCW 16497
+ DCW -28214
+ DCW -32768
+ DCW 32767
+ DCW 13461
+ DCW -28419
+ DCW 4680
+ DCW -11377
+ DCW 15801
+ DCW 9599
+ DCW -7498
+ DCW -19806
+ DCW 8630
+ DCW 24482
+ DCW -32768
+ DCW 10480
+ DCW 12832
+ DCW -17944
+ DCW 13901
+ DCW -2432
+ DCW -1770
+ DCW -8442
+ DCW 13033
+ DCW -2365
+ DCW -20338
+ DCW 32767
+ DCW -13822
+ DCW -16325
+ DCW 11914
+ DCW -10350
+ DCW 12300
+ DCW -340
+ DCW 0
+ DCW -13163
+ DCW 7502
+ DCW 10727
+ DCW -19743
+ DCW 24033
+ DCW -11251
+ DCW -16602
+ DCW 18133
+ DCW -2696
+ DCW -1229
+ DCW -7305
+ DCW 8169
+ DCW 2826
+ DCW -780
+ DCW 1308
+ DCW -18565
+ DCW 10362
+ DCW 7502
+ DCW -3112
+ DCW 2495
+ DCW -8001
+ DCW -923
+ DCW 2332
+ DCW 12736
+ DCW -4064
+ DCW -11415
+ DCW 9477
+ DCW -8307
+ DCW 67
+ DCW 7418
+ DCW -2575
+ DCW 1111
+ DCW -654
+ DCW 2285
+ DCW -11792
+ DCW 9645
+ DCW 6890
+ DCW -16833
+ DCW 16204
+ DCW -7028
+ DCW -10844
+ DCW 11427
+ DCW -2298
+ DCW 3694
+ DCW -851
+ DCW 3917
+ DCW -11528
+ DCW -143
+ DCW 16699
+ DCW -17671
+ DCW 9817
+ DCW 1677
+ DCW -12291
+ DCW 9867
+ DCW -3258
+ DCW 3409
+ DCW -2961
+ DCW 3753
+ DCW -3606
+ DCW -5686
+ DCW 7519
+ DCW -9435
+ DCW 12069
+ DCW 3103
+ DCW -10249
+ DCW 1241
+ DCW 2818
+ DCW 507
+ DCW -5254
+ DCW 7301
+ DCW -9549
+ DCW 226
+ DCW 10303
+ DCW -7255
+ DCW 5464
+ DCW -520
+ DCW -2415
+ DCW -210
+ DCW 994
+ DCW -5716
+ DCW -2747
+ DCW 16208
+ DCW -8362
+ DCW -4093
+ DCW 12476
+ DCW -9712
+ DCW -5053
+ DCW 5066
+ DCW -2508
+ DCW 3183
+ DCW 1799
+ DCW -3946
+ DCW -3187
+ DCW 8156
+ DCW 4890
+ DCW -12107
+ DCW 7573
+ DCW -8454
+ DCW -2873
+ DCW 16183
+ DCW -7712
+ DCW 3279
+ DCW -7267
+ DCW 3200
+ DCW 3493
+ DCW -4751
+ DCW 10433
+ DCW -17671
+ DCW 3409
+ DCW 9003
+ DCW -4625
+ DCW 5665
+ DCW -5368
+ DCW 2269
+ DCW -3393
+ DCW 2558
+ DCW 75
+ DCW -6974
+ DCW 8567
+ DCW -5137
+ DCW 579
+ DCW 5795
+ DCW -4047
+ DCW -491
+ DCW 2998
+ DCW -3221
+ DCW -3590
+ DCW 6693
+ DCW -5007
+ DCW -3963
+ DCW 8140
+ DCW 2080
+ DCW -5561
+ DCW 2214
+ DCW 730
+ DCW -6898
+ DCW 8722
+ DCW 164
+ DCW -5598
+ DCW 5963
+ DCW -3082
+ DCW -4856
+ DCW 3409
+ DCW 2881
+ DCW -1925
+ DCW -323
+ DCW -1497
+ DCW -1858
+ DCW 235
+ DCW 4525
+ DCW 264
+ DCW -2831
+ DCW 1929
+ DCW -6831
+ DCW 5867
+ DCW 3304
+ DCW -2822
+ DCW 3535
+ DCW -7204
+ DCW 3162
+ DCW -1552
+ DCW 524
+ DCW 1124
+ DCW -4206
+ DCW 8454
+ DCW -4336
+ DCW -1355
+ DCW -159
+ DCW -2831
+ DCW 3980
+ DCW 415
+ DCW 1673
+ DCW -5330
+ DCW 2218
+ DCW 1891
+ DCW -3309
+ DCW 6198
+ DCW -4114
+ DCW -2273
+ DCW 3145
+ DCW -6529
+ DCW 4424
+ DCW 12178
+ DCW -13168
+ DCW -5108
+ DCW 13901
+ DCW -6974
+ DCW -612
+ DCW -193
+ DCW -7318
+ DCW 9721
+ DCW 1610
+ DCW -8068
+ DCW 445
+ DCW 8387
+ DCW -2910
+ DCW -7272
+ DCW 6622
+ DCW -1598
+ DCW -424
+ DCW 3057
+ DCW -7494
+ DCW 1208
+ DCW 8026
+ DCW -1568
+ DCW -3414
+ DCW 2885
+ DCW -4235
+ DCW -3443
+ DCW 6261
+ DCW 981
+ DCW -4336
+ DCW 3732
+ DCW 4453
+ DCW -7104
+ DCW 164
+ DCW 3430
+ DCW -3770
+ DCW 4114
+ DCW 3992
+ DCW -8462
+ DCW -1493
+ DCW 3824
+ DCW -5691
+ DCW 6311
+ DCW 1237
+ DCW -10249
+ DCW 3145
+ DCW 4827
+ DCW 3099
+ DCW -2223
+ DCW 3296
+ DCW 1199
+ DCW -6445
+ DCW 4168
+ DCW -5875
+ DCW 663
+ DCW 7351
+ DCW -6156
+ DCW 205
+ DCW 3837
+ DCW -4307
+ DCW -7414
+ DCW 7171
+ DCW 3363
+ DCW -6848
+ DCW 5200
+ DCW -2114
+ DCW -2504
+ DCW 6055
+ DCW -2130
+ DCW -2046
+ DCW 2940
+ DCW 587
+ DCW -3606
+ DCW 1484
+ DCW 528
+ DCW -516
+ DCW 2478
+ DCW -973
+ DCW -1241
+ DCW -2789
+ DCW -918
+ DCW -247
+ DCW 5095
+ DCW 1690
+ DCW -7624
+ DCW 956
+ DCW 4013
+ DCW -2273
+ DCW 176
+ DCW 3632
+ DCW -2537
+ DCW 1942
+ DCW -1233
+ DCW -3858
+ DCW 4546
+ DCW -361
+ DCW -1455
+ DCW -256
+ DCW 1174
+ DCW -2759
+ DCW -2168
+ DCW 6089
+ DCW 994
+ DCW -1795
+ DCW -839
+ DCW -3544
+ DCW -1078
+ DCW 6169
+ DCW 1036
+ DCW -4286
+ DCW 2537
+ DCW -256
+ DCW 470
+ DCW 3179
+ DCW -2894
+ DCW -3866
+ DCW 688
+ DCW 876
+ DCW -923
+ DCW 3221
+ DCW -335
+ DCW -1141
+ DCW 1845
+ DCW -243
+ DCW -2407
+ DCW -3263
+ DCW 763
+ DCW 470
+ DCW 3439
+ DCW 2453
+ DCW -4617
+ DCW 2705
+ DCW 2206
+ DCW -2797
+ DCW 403
+ DCW -3904
+ DCW 168
+ DCW 1086
+ DCW 2160
+ DCW 2118
+ DCW -6093
+ DCW 3107
+ DCW -1002
+ DCW -155
+ DCW 5171
+ DCW -5997
+ DCW -2914
+ DCW 2499
+ DCW 4575
+ DCW 13
+ DCW 2285
+ DCW -5041
+ DCW -5196
+ DCW 10111
+ DCW -3061
+ DCW -1648
+ DCW -1300
+ DCW 3967
+ DCW 3690
+ DCW -9406
+ DCW 1300
+ DCW 281
+ DCW 7439
+ DCW -4105
+ DCW -4399
+ DCW 1887
+ DCW -3359
+ DCW 6483
+ DCW -6194
+ DCW 8068
+ DCW -2088
+ DCW -4311
+ DCW 4068
+ DCW -10182
+ DCW 9482
+ DCW -830
+ DCW -1770
+ DCW 2487
+ DCW 512
+ DCW -3216
+ DCW 474
+ DCW 7590
+ DCW -7913
+ DCW 5137
+ DCW -4139
+ DCW -4860
+ DCW 5183
+ DCW 2013
+ DCW -981
+ DCW -1522
+ DCW 5171
+ DCW -7573
+ DCW 4898
+ DCW -13
+ DCW -2466
+ DCW -969
+ DCW -1271
+ DCW 6911
+ DCW -5883
+ DCW 5477
+ DCW -4395
+ DCW 1963
+ DCW -356
+ DCW -1791
+ DCW -134
+ DCW -7687
+ DCW 14149
+ DCW -8819
+ DCW 8026
+ DCW -348
+ DCW -8546
+ DCW 7561
+ DCW -6986
+ DCW 4474
+ DCW -7045
+ DCW 10513
+ DCW -4831
+ DCW -2923
+ DCW 10643
+ DCW -12929
+ DCW 10001
+ DCW -5703
+ DCW -751
+ DCW 4298
+ DCW -5259
+ DCW 2017
+ DCW -6110
+ DCW 11582
+ DCW -3661
+ DCW 84
+ DCW 3284
+ DCW -7884
+ DCW 3862
+ DCW -6936
+ DCW 9171
+ DCW -2520
+ DCW 855
+ DCW 3749
+ DCW -7511
+ DCW 5372
+ DCW -5628
+ DCW 4399
+ DCW -2579
+ DCW 3263
+ DCW -1891
+ DCW -3996
+ DCW 4982
+ DCW -7020
+ DCW 8072
+ DCW -2273
+ DCW -2193
+ DCW 1011
+ DCW 461
+ DCW 788
+ DCW -2986
+ DCW 5686
+ DCW -2562
+ DCW 164
+ DCW -3812
+ DCW 692
+ DCW 6152
+ DCW -4558
+ DCW 4043
+ DCW -2789
+ DCW -2604
+ DCW -1887
+ DCW 2013
+ DCW 3317
+ DCW -4235
+ DCW 8400
+ DCW -6315
+ DCW -3225
+ DCW 205
+ DCW 4277
+ DCW 5514
+ DCW -6336
+ DCW 5774
+ DCW -10211
+ DCW 700
+ DCW 4969
+ DCW -3141
+ DCW 4567
+ DCW 4
+ DCW 2998
+ DCW -8148
+ DCW 1355
+ DCW 197
+ DCW -948
+ DCW 5900
+ DCW -4353
+ DCW 2894
+ DCW -4445
+ DCW -474
+ DCW 315
+ DCW 6039
+ DCW -1858
+ DCW -10618
+ DCW 15231
+ DCW -10131
+ DCW -2294
+ DCW 9913
+ DCW -3502
+ DCW 428
+ DCW -3564
+ DCW 4999
+ DCW -4349
+ DCW -277
+ DCW 3388
+ DCW -914
+ DCW 155
+ DCW 323
+ DCW 315
+ DCW -5984
+ DCW 5984
+ DCW 113
+ DCW -1598
+ DCW 4064
+ DCW -7729
+ DCW 705
+ DCW 3745
+ DCW -2629
+ DCW 2340
+ DCW 3237
+ DCW -5896
+ DCW -1631
+ DCW 6680
+ DCW -7251
+ DCW 3036
+ DCW 9507
+ DCW -797
+ DCW -10790
+ DCW -6181
+ DCW 14258
+ DCW -11985
+ DCW 3984
+ DCW 15206
+ DCW -15042
+ DCW 629
+ DCW -394
+ DCW -3007
+ DCW 10706
+ DCW -1032
+ DCW -5770
+ DCW 7771
+ DCW -12237
+ DCW 243
+ DCW 9762
+ DCW -7322
+ DCW 12723
+ DCW -10756
+ DCW -4248
+ DCW 8026
+ DCW -7297
+ DCW 9310
+ DCW -3757
+ DCW -2030
+ DCW 4776
+ DCW -6643
+ DCW -3024
+ DCW 11901
+ DCW -939
+ DCW -9557
+ DCW 7905
+ DCW -7901
+ DCW 6110
+ DCW 1732
+ DCW -7561
+ DCW 8567
+ DCW -9435
+ DCW 3594
+ DCW 5108
+ DCW -3355
+ DCW 2185
+ DCW -3367
+ DCW -3128
+ DCW 5519
+ DCW 105
+ DCW -3544
+ DCW 6827
+ DCW -9813
+ DCW 2948
+ DCW 7674
+ DCW -10136
+ DCW 7871
+ DCW 340
+ DCW -9062
+ DCW 2680
+ DCW 3892
+ DCW -960
+ DCW 2873
+ DCW 143
+ DCW -5171
+ DCW 2353
+ DCW -4860
+ DCW 3866
+ DCW 3460
+ DCW -2906
+ DCW 1812
+ DCW -8345
+ DCW 6492
+ DCW 2680
+ DCW -1631
+ DCW 3753
+ DCW -7330
+ DCW -1078
+ DCW 5590
+ DCW -2181
+ DCW -4441
+ DCW 7523
+ DCW -4919
+ DCW 96
+ DCW 6177
+ DCW -3787
+ DCW 2223
+ DCW -5951
+ DCW 2877
+ DCW 2038
+ DCW -3787
+ DCW 3984
+ DCW -2504
+ DCW 352
+ DCW 2025
+ DCW -4944
+ DCW 2969
+ DCW 3824
+ DCW -7942
+ DCW 3007
+ DCW 147
+ DCW -4357
+ DCW 9754
+ DCW -46
+ DCW -5456
+ DCW 2231
+ DCW -4089
+ DCW -440
+ DCW 8844
+ DCW -4378
+ DCW -1640
+ DCW -1262
+ DCW -3850
+ DCW 10320
+ DCW -5435
+ DCW -1388
+ DCW 5393
+ DCW -11218
+ DCW 6777
+ DCW 7532
+ DCW -9385
+ DCW 2881
+ DCW 2743
+ DCW -6529
+ DCW 3309
+ DCW 1904
+ DCW -688
+ DCW 533
+ DCW -4047
+ DCW 2290
+ DCW -2399
+ DCW 3418
+ DCW 985
+ DCW -4479
+ DCW 8806
+ DCW -11662
+ DCW -1329
+ DCW 10907
+ DCW -5733
+ DCW 155
+ DCW 1724
+ DCW -1069
+ DCW -4298
+ DCW 8177
+ DCW -767
+ DCW -7112
+ DCW 8026
+ DCW -4349
+ DCW -562
+ DCW 2843
+ DCW -1124
+ DCW -654
+ DCW -2231
+ DCW 4365
+ DCW -746
+ DCW -1296
+ DCW 1833
+ DCW -5305
+ DCW 4416
+ DCW 4126
+ DCW -7611
+ DCW 4583
+ DCW 415
+ DCW -5649
+ DCW 4001
+ DCW -138
+ DCW -1791
+ DCW 3028
+ DCW -1614
+ DCW -1728
+ DCW 3200
+ DCW -218
+ DCW 881
+ DCW -671
+ DCW -1027
+ DCW -973
+ DCW -2449
+ DCW 4994
+ DCW -356
+ DCW -4256
+ DCW 4932
+ DCW -2759
+ DCW -1623
+ DCW 4437
+ DCW -5103
+ DCW 2625
+ DCW 3116
+ DCW -4739
+ DCW 1535
+ DCW 3946
+ DCW -4932
+ DCW -2164
+ DCW 5292
+ DCW -1157
+ DCW 2239
+ DCW -2239
+ DCW -2462
+ DCW 2193
+ DCW -3032
+ DCW 3485
+ DCW -3036
+ DCW 2671
+ DCW 2088
+ DCW -9645
+ DCW 9477
+ DCW -92
+ DCW -4760
+ DCW 6039
+ DCW -4856
+ DCW -2365
+ DCW 4424
+ DCW 595
+ DCW -3917
+ DCW 6320
+ DCW -2000
+ DCW -7758
+ DCW 7649
+ DCW -1120
+ DCW -2713
+ DCW 3028
+ DCW 256
+ DCW -1749
+ DCW -2059
+ DCW 2885
+ DCW -1074
+ DCW -1103
+ DCW 3778
+ DCW -2248
+ DCW 742
+ DCW 449
+ DCW -3351
+ DCW 2839
+ DCW 1107
+ DCW -2768
+ DCW -818
+ DCW 3061
+ DCW -3351
+ DCW -1023
+ DCW 4563
+ DCW -2302
+ DCW 457
+ DCW -218
+ DCW -1313
+ DCW 939
+ DCW 1178
+ DCW 700
+ DCW -2831
+ DCW 2743
+ DCW -432
+ DCW -4655
+ DCW 6722
+ DCW -902
+ DCW -3632
+ DCW 4139
+ DCW -2344
+ DCW -1543
+ DCW 1409
+ DCW 331
+ DCW -835
+ DCW 2290
+ DCW -2441
+ DCW -2789
+ DCW 5510
+ DCW -1187
+ DCW -927
+ DCW 562
+ DCW 952
+ DCW 495
+ DCW -3313
+ DCW 4915
+ DCW -2378
+ DCW -2504
+ DCW 3728
+ DCW -4835
+ DCW 5967
+ DCW -436
+ DCW -5653
+ DCW 3682
+ DCW -1455
+ DCW 256
+ DCW -377
+ DCW 2680
+ DCW -730
+ DCW -3590
+ DCW 2759
+ DCW 554
+ DCW 17
+ DCW 294
+ DCW -545
+ DCW -1744
+ DCW 1279
+ DCW 340
+ DCW -1300
+ DCW 4441
+ DCW -3095
+ DCW -4902
+ DCW 4604
+ DCW -398
+ DCW -671
+ DCW 1627
+ DCW -2046
+ DCW -29
+ DCW 608
+ DCW -587
+ DCW 2843
+ DCW 1329
+ DCW -2353
+ DCW 457
+ DCW 449
+ DCW 1975
+ DCW -4072
+ DCW -5510
+ DCW 3602
+ DCW -637
+ DCW 2663
+ DCW 3661
+ DCW -4101
+ DCW 3866
+ DCW 80
+ DCW -5636
+ DCW 3007
+ DCW -1610
+ DCW -3380
+ DCW 914
+ DCW 1602
+ DCW 3158
+ DCW 1036
+ DCW 130
+ DCW -2747
+ DCW -1782
+ DCW 2931
+ DCW -2302
+ DCW -3225
+ DCW 5179
+ DCW 1262
+ DCW -5095
+ DCW 5888
+ DCW -637
+ DCW -3183
+ DCW 4621
+ DCW -8387
+ DCW 5795
+ DCW 2084
+ DCW -9964
+ DCW 7125
+ DCW 759
+ DCW -1019
+ DCW 839
+ DCW 419
+ DCW -352
+ DCW -2646
+ DCW -851
+ DCW -75
+ DCW 9880
+ DCW -3363
+ DCW -12191
+ DCW 6395
+ DCW 8391
+ DCW -2688
+ DCW -5238
+ DCW 2759
+ DCW -1484
+ DCW -1023
+ DCW 231
+ DCW -5363
+ DCW 11046
+ DCW 1778
+ DCW -10635
+ DCW 6047
+ DCW 847
+ DCW -3615
+ DCW 2042
+ DCW -2684
+ DCW 969
+ DCW 3883
+ DCW -7364
+ DCW 1090
+ DCW 10924
+ DCW -8244
+ DCW -1015
+ DCW 6550
+ DCW -7812
+ DCW 3749
+ DCW -4
+ DCW -5594
+ DCW 8777
+ DCW -1111
+ DCW -6475
+ DCW 5674
+ DCW 1011
+ DCW -6223
+ DCW 3082
+ DCW 1904
+ DCW -3653
+ DCW 2214
+ DCW -1812
+ DCW -2323
+ DCW 6437
+ DCW -503
+ DCW -4663
+ DCW 6940
+ DCW -1614
+ DCW -8697
+ DCW 7523
+ DCW 1241
+ DCW -3946
+ DCW 4416
+ DCW -4256
+ DCW 143
+ DCW 4449
+ DCW -4906
+ DCW 3556
+ DCW 1967
+ DCW -7666
+ DCW 1187
+ DCW 1359
+ DCW 516
+ DCW 3544
+ DCW -3900
+ DCW 143
+ DCW 4034
+ DCW -4709
+ DCW -1405
+ DCW 6370
+ DCW -1048
+ DCW -5233
+ DCW 2302
+ DCW 600
+ DCW -759
+ DCW -470
+ DCW -2818
+ DCW 4047
+ DCW 2185
+ DCW -5225
+ DCW 1656
+ DCW 4177
+ DCW -5556
+ DCW 952
+ DCW 5825
+ DCW -2814
+ DCW 2722
+ DCW -1535
+ DCW -5493
+ DCW 5200
+ DCW -2407
+ DCW -4571
+ DCW 6181
+ DCW -868
+ DCW -4521
+ DCW 3736
+ DCW 1283
+ DCW 449
+ DCW 1837
+ DCW -5011
+ DCW -1770
+ DCW 3879
+ DCW -2952
+ DCW 587
+ DCW 6697
+ DCW -3330
+ DCW -2541
+ DCW 3137
+ DCW -1958
+ DCW -629
+ DCW 872
+ DCW -1795
+ DCW 1967
+ DCW 2462
+ DCW -3154
+ DCW 1002
+ DCW 1887
+ DCW -4579
+ DCW -558
+ DCW 1300
+ DCW 126
+ DCW 893
+ DCW -1124
+ DCW 1573
+ DCW 3837
+ DCW -1434
+ DCW -1929
+ DCW 2097
+ DCW -4525
+ DCW -3154
+ DCW 3632
+ DCW -365
+ DCW 3674
+ DCW 176
+ DCW -4936
+ DCW 4173
+ DCW 621
+ DCW -5108
+ DCW 738
+ DCW 1292
+ DCW -2432
+ DCW 3007
+ DCW 3212
+ DCW -1095
+ DCW 1078
+ DCW -3351
+ DCW -3095
+ DCW 2810
+ DCW -247
+ DCW -3019
+ DCW 2470
+ DCW 2319
+ DCW -1086
+ DCW 2671
+ DCW -545
+ DCW -2860
+ DCW -533
+ DCW -2931
+ DCW 2478
+ DCW 4344
+ DCW -3703
+ DCW 700
+ DCW 2445
+ DCW -2738
+ DCW 1975
+ DCW 256
+ DCW -2394
+ DCW 1334
+ DCW -3422
+ DCW -763
+ DCW 7389
+ DCW -973
+ DCW -4424
+ DCW 2302
+ DCW -470
+ DCW -725
+ DCW 1048
+ DCW -1744
+ DCW 1522
+ DCW 1325
+ DCW -3317
+ DCW 784
+ DCW 3636
+ DCW -3296
+ DCW -797
+ DCW 3988
+ DCW -2269
+ DCW -1229
+ DCW 533
+ DCW -247
+ DCW 1988
+ DCW 239
+ DCW -1229
+ DCW 1132
+ DCW -566
+ DCW -3040
+ DCW 1652
+ DCW 1153
+ DCW -562
+ DCW 801
+ DCW -1430
+ DCW -17
+ DCW 1069
+ DCW -1581
+ DCW 1518
+ DCW 2097
+ DCW -4877
+ DCW 365
+ DCW 3674
+ DCW -3871
+ DCW 2424
+ DCW 2701
+ DCW -4198
+ DCW 1342
+ DCW -365
+ DCW -839
+ DCW 4047
+ DCW -315
+ DCW -2914
+ DCW 839
+ DCW 302
+ DCW -1505
+ DCW 1296
+ DCW -956
+ DCW 1095
+ DCW 956
+ DCW -3573
+ DCW 3715
+ DCW 1963
+ DCW -4915
+ DCW 55
+ DCW 2550
+ DCW -361
+ DCW 1023
+ DCW 277
+ DCW -2764
+ DCW 1048
+ DCW 67
+ DCW -2277
+ DCW 2575
+ DCW 432
+ DCW -2214
+ DCW 935
+ DCW 1078
+ DCW 591
+ DCW 931
+ DCW -2051
+ DCW -2545
+ DCW 1740
+ DCW -134
+ DCW -63
+ DCW 1849
+ DCW -889
+ DCW -50
+ DCW 1220
+ DCW 394
+ DCW -935
+ DCW -2407
+ DCW -352
+ DCW 2864
+ DCW -868
+ DCW -1409
+ DCW 2264
+ DCW -663
+ DCW -1405
+ DCW 1082
+ DCW 843
+ DCW 13
+ DCW -1002
+ DCW -2260
+ DCW 876
+ DCW 3443
+ DCW -1988
+ DCW 784
+ DCW 3405
+ DCW -6202
+ DCW 17
+ DCW 4508
+ DCW -897
+ DCW -1539
+ DCW -5326
+ DCW 4332
+ DCW 8202
+ DCW -6546
+ DCW -6546
+ DCW 8232
+ DCW 2722
+ DCW -9133
+ DCW 218
+ DCW 6705
+ DCW 3430
+ DCW -7125
+ DCW -4760
+ DCW 8974
+ DCW 1728
+ DCW -8756
+ DCW 298
+ DCW 8421
+ DCW -2696
+ DCW -6311
+ DCW 1262
+ DCW 8198
+ DCW 1514
+ DCW -14044
+ DCW 1686
+ DCW 11629
+ DCW -5586
+ DCW -5133
+ DCW 5934
+ DCW 2281
+ DCW -4558
+ DCW -721
+ DCW 814
+ DCW 4240
+ DCW -2596
+ DCW -8869
+ DCW 9314
+ DCW 3233
+ DCW -5301
+ DCW 3720
+ DCW -2998
+ DCW -2524
+ DCW 5288
+ DCW -1996
+ DCW -6399
+ DCW 7754
+ DCW 3896
+ DCW -11062
+ DCW -147
+ DCW 9129
+ DCW 411
+ DCW -8366
+ DCW -1732
+ DCW 9519
+ DCW 1329
+ DCW -10706
+ DCW 2206
+ DCW 10576
+ DCW -5967
+ DCW -7901
+ DCW 5527
+ DCW 8257
+ DCW -5875
+ DCW -11293
+ DCW 7301
+ DCW 13830
+ DCW -5691
+ DCW -13721
+ DCW 9804
+ DCW 6299
+ DCW -13285
+ DCW 889
+ DCW 9712
+ DCW 3057
+ DCW -10052
+ DCW -8538
+ DCW 14304
+ DCW 6072
+ DCW -15168
+ DCW 1648
+ DCW 10446
+ DCW -5259
+ DCW -7716
+ DCW 1275
+ DCW 12547
+ DCW -713
+ DCW -14879
+ DCW 3892
+ DCW 10626
+ DCW -3187
+ DCW -7028
+ DCW 2948
+ DCW 6932
+ DCW -6886
+ DCW -8052
+ DCW 9364
+ DCW 7871
+ DCW -8240
+ DCW -6445
+ DCW 6684
+ DCW 5301
+ DCW -5967
+ DCW -4290
+ DCW 7330
+ DCW 755
+ DCW -8832
+ DCW 1459
+ DCW 7984
+ DCW 2134
+ DCW -7871
+ DCW -2931
+ DCW 9473
+ DCW -2038
+ DCW -7137
+ DCW 5204
+ DCW 2466
+ DCW -3489
+ DCW -2789
+ DCW 864
+ DCW 8655
+ DCW -1447
+ DCW -11595
+ DCW 6273
+ DCW 5997
+ DCW -8588
+ DCW 382
+ DCW 5573
+ DCW -755
+ DCW -5590
+ DCW -1069
+ DCW 7787
+ DCW 1438
+ DCW -6789
+ DCW -990
+ DCW 5447
+ DCW 1199
+ DCW -6085
+ DCW -361
+ DCW 6584
+ DCW -2139
+ DCW -4705
+ DCW 3883
+ DCW 2550
+ DCW -3107
+ DCW -3405
+ DCW 1489
+ DCW 6626
+ DCW -4001
+ DCW -5535
+ DCW 6718
+ DCW 1556
+ DCW -3221
+ DCW -1942
+ DCW 2273
+ DCW 4760
+ DCW -6034
+ DCW -4760
+ DCW 8379
+ DCW 1380
+ DCW -6731
+ DCW 2583
+ DCW 2160
+ DCW -1468
+ DCW -1300
+ DCW -952
+ DCW 4932
+ DCW -751
+ DCW -7347
+ DCW 2210
+ DCW 7498
+ DCW -1048
+ DCW -6487
+ DCW 176
+ DCW 5858
+ DCW -1820
+ DCW -4076
+ DCW 3460
+ DCW 2185
+ DCW -4051
+ DCW -4269
+ DCW 6148
+ DCW 5959
+ DCW -5774
+ DCW -4340
+ DCW 4282
+ DCW 914
+ DCW -3304
+ DCW 612
+ DCW 1254
+ DCW 2420
+ DCW -5561
+ DCW -1103
+ DCW 7884
+ DCW -1833
+ DCW -3065
+ DCW -835
+ DCW 1111
+ DCW 1061
+ DCW -1585
+ DCW -193
+ DCW 4495
+ DCW -2545
+ DCW -4948
+ DCW 5489
+ DCW 1929
+ DCW -2424
+ DCW -1988
+ DCW 239
+ DCW 3082
+ DCW -814
+ DCW -2608
+ DCW 4240
+ DCW -1082
+ DCW -4403
+ DCW 2596
+ DCW 1895
+ DCW 948
+ DCW -3523
+ DCW -1719
+ DCW 4198
+ DCW 17
+ DCW -1313
+ DCW 1493
+ DCW 361
+ DCW -1417
+ DCW -4017
+ DCW 2273
+ DCW 5271
+ DCW -3233
+ DCW -3921
+ DCW 1912
+ DCW 2487
+ DCW -931
+ DCW -2164
+ DCW 1614
+ DCW 2885
+ DCW -5477
+ DCW -734
+ DCW 5917
+ DCW -973
+ DCW -3837
+ DCW 554
+ DCW 1631
+ DCW 2000
+ DCW -2235
+ DCW -1908
+ DCW 4772
+ DCW -2231
+ DCW -2847
+ DCW 931
+ DCW 3166
+ DCW 541
+ DCW -3984
+ DCW 935
+ DCW 3187
+ DCW -2768
+ DCW -1556
+ DCW 2625
+ DCW 1199
+ DCW -1929
+ DCW -3036
+ DCW 3472
+ DCW 818
+ DCW -3913
+ DCW -189
+ DCW 12081
+ DCW 969
+ DCW -13855
+ DCW -3988
+ DCW 7976
+ DCW 9410
+ DCW -8924
+ DCW -4705
+ DCW 4051
+ DCW 3476
+ DCW 1069
+ DCW -9494
+ DCW 2701
+ DCW 9557
+ DCW -8588
+ DCW -2235
+ DCW 7947
+ DCW -5359
+ DCW 608
+ DCW 2034
+ DCW -2290
+ DCW 3405
+ DCW -4940
+ DCW 751
+ DCW 6932
+ DCW -4688
+ DCW -3980
+ DCW 486
+ DCW 4458
+ DCW 1011
+ DCW -3527
+ DCW 843
+ DCW 130
+ DCW -2919
+ DCW 1782
+ DCW 4009
+ DCW -956
+ DCW 130
+ DCW -4701
+ DCW 1539
+ DCW 4856
+ DCW -3107
+ DCW 2139
+ DCW -2046
+ DCW -2864
+ DCW 1497
+ DCW -893
+ DCW 6118
+ DCW -1598
+ DCW -6932
+ DCW 5808
+ DCW 260
+ DCW -1237
+ DCW 2600
+ DCW -2923
+ DCW -285
+ DCW 1568
+ DCW -4294
+ DCW 5208
+ DCW 2139
+ DCW -6554
+ DCW 1736
+ DCW -80
+ DCW 1023
+ DCW 579
+ DCW -231
+ DCW 231
+ DCW -998
+ DCW -902
+ DCW 2692
+ DCW 340
+ DCW -2319
+ DCW -549
+ DCW -1707
+ DCW 3980
+ DCW 377
+ DCW -2260
+ DCW 1698
+ DCW -25
+ DCW -3011
+ DCW 1107
+ DCW 3632
+ DCW 524
+ DCW -3372
+ DCW -3082
+ DCW 3741
+ DCW 327
+ DCW -159
+ DCW 1518
+ DCW -2646
+ DCW 1510
+ DCW -2109
+ DCW 168
+ DCW 6504
+ DCW -4571
+ DCW -4143
+ DCW 2239
+ DCW 2080
+ DCW -147
+ DCW 155
+ DCW -453
+ DCW -222
+ DCW -566
+ DCW -3485
+ DCW 4869
+ DCW 2873
+ DCW -4583
+ DCW -1245
+ DCW 595
+ DCW 2411
+ DCW 273
+ DCW -1770
+ DCW 1946
+ DCW -1765
+ DCW -2105
+ DCW 1325
+ DCW 1547
+ DCW 1531
+ DCW -2772
+ DCW -2210
+ DCW 3485
+ DCW 675
+ DCW -3162
+ DCW 2248
+ DCW 1635
+ DCW -2629
+ DCW -684
+ DCW 2176
+ DCW 1870
+ DCW -1744
+ DCW -2575
+ DCW 2512
+ DCW -575
+ DCW -1602
+ DCW 1166
+ DCW -663
+ DCW 2940
+ DCW -2873
+ DCW -2097
+ DCW 5623
+ DCW -2374
+ DCW -3564
+ DCW 3154
+ DCW 981
+ DCW 226
+ DCW -830
+ DCW -1011
+ DCW 2919
+ DCW -1115
+ DCW -2449
+ DCW 2910
+ DCW 872
+ DCW -1967
+ DCW -1464
+ DCW 1040
+ DCW 3892
+ DCW -3644
+ DCW -1698
+ DCW 2504
+ DCW -1061
+ DCW 281
+ DCW -122
+ DCW 1422
+ DCW 201
+ DCW -3074
+ DCW 407
+ DCW 4244
+ DCW -1241
+ DCW -2944
+ DCW 1715
+ DCW 155
+ DCW -84
+ DCW -1141
+ DCW 432
+ DCW 3330
+ DCW -3971
+ DCW -1715
+ DCW 3401
+ DCW 1539
+ DCW -386
+ DCW -3824
+ DCW 1753
+ DCW 1422
+ DCW -2969
+ DCW 1640
+ DCW 2420
+ DCW -2747
+ DCW -1883
+ DCW 1921
+ DCW 1895
+ DCW 889
+ DCW -2764
+ DCW -1199
+ DCW 3485
+ DCW -1489
+ DCW -1686
+ DCW 3506
+ DCW -910
+ DCW -1740
+ DCW -1518
+ DCW 2390
+ DCW 2495
+ DCW -3560
+ DCW -1128
+ DCW 1086
+ DCW 2202
+ DCW -583
+ DCW -826
+ DCW 1325
+ DCW -172
+ DCW -3363
+ DCW 1153
+ DCW 4915
+ DCW -1606
+ DCW -3544
+ DCW 180
+ DCW 2508
+ DCW -377
+ DCW -637
+ DCW 1296
+ DCW 369
+ DCW -3120
+ DCW -637
+ DCW 3963
+ DCW 985
+ DCW -1912
+ DCW -4131
+ DCW 2323
+ DCW 3292
+ DCW -1988
+ DCW 1409
+ DCW -814
+ DCW -851
+ DCW -725
+ DCW 688
+ DCW 2453
+ DCW -981
+ DCW -1069
+ DCW -1728
+ DCW 2516
+ DCW 776
+ DCW -2667
+ DCW 734
+ DCW 2172
+ DCW -1086
+ DCW -4315
+ DCW 3355
+ DCW 2810
+ DCW -2738
+ DCW 289
+ DCW -1547
+ DCW 1245
+ DCW 2109
+ DCW -2256
+ DCW 1417
+ DCW -218
+ DCW -2252
+ DCW 835
+ DCW 2445
+ DCW -1006
+ DCW -2592
+ DCW 1334
+ DCW 1191
+ DCW -164
+ DCW -1560
+ DCW 155
+ DCW 1434
+ DCW -1132
+ DCW -13
+ DCW -38
+ DCW 2030
+ DCW 436
+ DCW -5087
+ DCW 3711
+ DCW 2101
+ DCW -2717
+ DCW 889
+ DCW -709
+ DCW 1472
+ DCW -1053
+ DCW -1438
+ DCW 1690
+ DCW 1916
+ DCW -1937
+ DCW -2415
+ DCW 3086
+ DCW -533
+ DCW -1195
+ DCW 1245
+ DCW 382
+ DCW -377
+ DCW -1388
+ DCW 1204
+ DCW 247
+ DCW -595
+ DCW 470
+ DCW -403
+ DCW 1313
+ DCW -1300
+ DCW -1283
+ DCW 2290
+ DCW -893
+ DCW -1556
+ DCW 2063
+ DCW 2520
+ DCW -2189
+ DCW -3309
+ DCW 1845
+ DCW 977
+ DCW -486
+ DCW 1396
+ DCW 88
+ DCW -1254
+ DCW -872
+ DCW -306
+ DCW 1728
+ DCW 1942
+ DCW -2076
+ DCW -1556
+ DCW 566
+ DCW 1166
+ DCW 684
+ DCW -1095
+ DCW -50
+ DCW -348
+ DCW -1455
+ DCW 1698
+ DCW 1635
+ DCW -1149
+ DCW -491
+ DCW -730
+ DCW 2067
+ DCW 973
+ DCW -2654
+ DCW 835
+ DCW 1740
+ DCW -2982
+ DCW -1992
+ DCW 3556
+ DCW 2822
+ DCW -1942
+ DCW -4441
+ DCW 931
+ DCW 2621
+ DCW 742
+ DCW 516
+ DCW -3028
+ DCW -549
+ DCW 1174
+ DCW 470
+ DCW 2558
+ DCW -1371
+ DCW -3699
+ DCW 923
+ DCW 2353
+ DCW 281
+ DCW -415
+ DCW -1984
+ DCW 2000
+ DCW 3380
+ DCW -7305
+ DCW -126
+ DCW 8513
+ DCW -3380
+ DCW -5762
+ DCW 2491
+ DCW 2952
+ DCW -667
+ DCW -130
+ DCW -1837
+ DCW -315
+ DCW 1862
+ DCW -1367
+ DCW 1417
+ DCW 2453
+ DCW -3711
+ DCW -1812
+ DCW 1992
+ DCW 956
+ DCW 2344
+ DCW -1858
+ DCW -3942
+ DCW 2533
+ DCW 1564
+ DCW -990
+ DCW 2399
+ DCW -2327
+ DCW -3221
+ DCW 2751
+ DCW 528
+ DCW 1526
+ DCW -281
+ DCW -4344
+ DCW 2260
+ DCW 2449
+ DCW -2327
+ DCW 1199
+ DCW 1749
+ DCW -3200
+ DCW -759
+ DCW 1522
+ DCW 415
+ DCW 3598
+ DCW -2789
+ DCW -4428
+ DCW 3778
+ DCW 923
+ DCW -2675
+ DCW 1992
+ DCW 1145
+ DCW -4554
+ DCW 1677
+ DCW 2084
+ DCW -1136
+ DCW 1225
+ DCW -2738
+ DCW 721
+ DCW 3502
+ DCW -2042
+ DCW -264
+ DCW 1665
+ DCW -2273
+ DCW -361
+ DCW 1396
+ DCW 482
+ DCW 1355
+ DCW -3137
+ DCW -1401
+ DCW 3678
+ DCW -512
+ DCW -650
+ DCW 1032
+ DCW -2571
+ DCW -214
+ DCW 1921
+ DCW -474
+ DCW 2512
+ DCW -1040
+ DCW -5057
+ DCW 2256
+ DCW 4957
+ DCW -2466
+ DCW -1837
+ DCW 2524
+ DCW -1690
+ DCW 1107
+ DCW -977
+ DCW 549
+ DCW 4164
+ DCW -5057
+ DCW -2474
+ DCW 2185
+ DCW 1765
+ DCW -185
+ DCW -906
+ DCW -222
+ DCW -1178
+ DCW 1539
+ DCW 1464
+ DCW 1568
+ DCW -1359
+ DCW -6114
+ DCW 2457
+ DCW 9343
+ DCW -876
+ DCW -6601
+ DCW -1157
+ DCW 1355
+ DCW 1568
+ DCW -344
+ DCW 327
+ DCW 721
+ DCW -4282
+ DCW -864
+ DCW 4529
+ DCW 1187
+ DCW -3137
+ DCW -1124
+ DCW 2529
+ DCW -977
+ DCW -281
+ DCW 373
+ DCW 449
+ DCW 2634
+ DCW -5644
+ DCW 155
+ DCW 6479
+ DCW -3787
+ DCW -923
+ DCW 2235
+ DCW -1141
+ DCW -985
+ DCW 4
+ DCW 1480
+ DCW 902
+ DCW -2709
+ DCW -1870
+ DCW 3883
+ DCW -92
+ DCW -1220
+ DCW 424
+ DCW -675
+ DCW 1883
+ DCW -1493
+ DCW -138
+ DCW 1375
+ DCW -1736
+ DCW 1334
+ DCW 1279
+ DCW -2399
+ DCW -306
+ DCW 398
+ DCW 654
+ DCW 1900
+ DCW -3116
+ DCW -1422
+ DCW 2877
+ DCW 658
+ DCW -793
+ DCW -2202
+ DCW 725
+ DCW 3095
+ DCW -1602
+ DCW -461
+ DCW 369
+ DCW -516
+ DCW 1518
+ DCW -944
+ DCW -67
+ DCW 1170
+ DCW -1208
+ DCW -512
+ DCW 1321
+ DCW -822
+ DCW -189
+ DCW 449
+ DCW -1166
+ DCW 2105
+ DCW -1296
+ DCW -1547
+ DCW 3409
+ DCW -1661
+ DCW -1346
+ DCW 1430
+ DCW -205
+ DCW 1677
+ DCW -994
+ DCW -1510
+ DCW 1929
+ DCW 277
+ DCW -969
+ DCW -8
+ DCW 1178
+ DCW -465
+ DCW -1417
+ DCW 17
+ DCW 935
+ DCW 784
+ DCW -1640
+ DCW -822
+ DCW 2847
+ DCW 2151
+ DCW -4965
+ DCW -2327
+ DCW 6185
+ DCW 847
+ DCW -3468
+ DCW -1208
+ DCW 1535
+ DCW 1375
+ DCW -1036
+ DCW 25
+ DCW 1237
+ DCW -654
+ DCW -1384
+ DCW -80
+ DCW 767
+ DCW 327
+ DCW -1170
+ DCW 1912
+ DCW -92
+ DCW -3078
+ DCW -218
+ DCW 5284
+ DCW 491
+ DCW -8366
+ DCW 4294
+ DCW 6269
+ DCW -6986
+ DCW -3044
+ DCW 9297
+ DCW -767
+ DCW -8760
+ DCW 4181
+ DCW 4189
+ DCW -470
+ DCW -5334
+ DCW -1820
+ DCW 9947
+ DCW -3875
+ DCW -9762
+ DCW 9788
+ DCW 4567
+ DCW -9586
+ DCW -516
+ DCW 5573
+ DCW 1476
+ DCW -277
+ DCW -5976
+ DCW 3313
+ DCW 3942
+ DCW -8278
+ DCW 6294
+ DCW 1044
+ DCW -5032
+ DCW 2202
+ DCW -621
+ DCW 0
+ DCW 1296
+ DCW 583
+ DCW -3674
+ DCW 2688
+ DCW -1099
+ DCW -1552
+ DCW 5959
+ DCW -2097
+ DCW -2793
+ DCW 285
+ DCW -122
+ DCW 1996
+ DCW 2294
+ DCW -3409
+ DCW -1803
+ DCW 3363
+ DCW -1115
+ DCW 801
+ DCW 755
+ DCW -4512
+ DCW 5028
+ DCW 876
+ DCW -7603
+ DCW 4986
+ DCW 2768
+ DCW -3992
+ DCW 2009
+ DCW -814
+ DCW -2269
+ DCW 4915
+ DCW -2764
+ DCW -2696
+ DCW 5724
+ DCW -3795
+ DCW -214
+ DCW 1438
+ DCW -1816
+ DCW 2193
+ DCW -1359
+ DCW -101
+ DCW 1392
+ DCW -185
+ DCW -2990
+ DCW 3443
+ DCW 1392
+ DCW -4114
+ DCW 2143
+ DCW -1078
+ DCW 1552
+ DCW -612
+ DCW -1065
+ DCW 2642
+ DCW -1292
+ DCW -415
+ DCW -461
+ DCW 1589
+ DCW -2348
+ DCW 742
+ DCW 3703
+ DCW -4709
+ DCW 591
+ DCW 2462
+ DCW -1317
+ DCW -885
+ DCW -315
+ DCW 1719
+ DCW 587
+ DCW -1954
+ DCW -1019
+ DCW 4235
+ DCW -1484
+ DCW -5192
+ DCW 5561
+ DCW 784
+ DCW -4013
+ DCW 864
+ DCW -801
+ DCW 2814
+ DCW 205
+ DCW -2818
+ DCW 1308
+ DCW 1761
+ DCW -575
+ DCW -3036
+ DCW 6114
+ DCW -159
+ DCW -8882
+ DCW 2516
+ DCW 5116
+ DCW 1325
+ DCW -2986
+ DCW -2692
+ DCW -243
+ DCW 2730
+ DCW -516
+ DCW 331
+ DCW 3661
+ DCW -5959
+ DCW -1099
+ DCW 3112
+ DCW 1635
+ DCW 1497
+ DCW -4885
+ DCW -1061
+ DCW 4282
+ DCW -1669
+ DCW 461
+ DCW 4802
+ DCW -4420
+ DCW -4420
+ DCW 1854
+ DCW 3250
+ DCW 3242
+ DCW -2587
+ DCW -4034
+ DCW 1531
+ DCW -247
+ DCW 1854
+ DCW 965
+ DCW 1635
+ DCW -1728
+ DCW -9322
+ DCW 9498
+ DCW 2797
+ DCW -3913
+ DCW 1770
+ DCW -3913
+ DCW 2353
+ DCW -1866
+ DCW 2709
+ DCW 1296
+ DCW -1019
+ DCW -956
+ DCW -5766
+ DCW 7636
+ DCW 231
+ DCW -2696
+ DCW 277
+ DCW -1329
+ DCW 2982
+ DCW -3573
+ DCW 5447
+ DCW -1895
+ DCW -5368
+ DCW 5229
+ DCW -3854
+ DCW 5095
+ DCW 2776
+ DCW -7896
+ DCW -637
+ DCW 2768
+ DCW 2105
+ DCW -558
+ DCW 2030
+ DCW -3757
+ DCW -4781
+ DCW 6261
+ DCW 428
+ DCW 2348
+ DCW -2139
+ DCW -6265
+ DCW 4386
+ DCW 323
+ DCW 3057
+ DCW -2998
+ DCW 814
+ DCW 2382
+ DCW -7578
+ DCW 6055
+ DCW -445
+ DCW -713
+ DCW 398
+ DCW -4068
+ DCW 4089
+ DCW -1807
+ DCW 1258
+ DCW 633
+ DCW -323
+ DCW 990
+ DCW -4252
+ DCW 4286
+ DCW 1388
+ DCW -2491
+ DCW -629
+ DCW -1916
+ DCW 3879
+ DCW -784
+ DCW 2428
+ DCW -2332
+ DCW -5443
+ DCW 6848
+ DCW -3862
+ DCW 3611
+ DCW 1375
+ DCW -6869
+ DCW 3493
+ DCW -323
+ DCW 2139
+ DCW -1296
+ DCW 1111
+ DCW -1824
+ DCW -2231
+ DCW 4734
+ DCW -2025
+ DCW 3187
+ DCW -3560
+ DCW -2411
+ DCW 3866
+ DCW -554
+ DCW 1002
+ DCW -1677
+ DCW 2772
+ DCW -3070
+ DCW -1866
+ DCW 3833
+ DCW -1497
+ DCW 2894
+ DCW -3632
+ DCW -1313
+ DCW 3850
+ DCW -1401
+ DCW 218
+ DCW -927
+ DCW 2021
+ DCW -1568
+ DCW -1111
+ DCW 3971
+ DCW -1128
+ DCW -1539
+ DCW -1816
+ DCW 2369
+ DCW 742
+ DCW -801
+ DCW 1874
+ DCW -4521
+ DCW 839
+ DCW 1447
+ DCW -407
+ DCW 3938
+ DCW -3678
+ DCW -1984
+ DCW 688
+ DCW 164
+ DCW 2348
+ DCW -273
+ DCW 1199
+ DCW -3690
+ DCW -629
+ DCW 3309
+ DCW 138
+ DCW 1048
+ DCW -3246
+ DCW 340
+ DCW 164
+ DCW 575
+ DCW 1191
+ DCW -1774
+ DCW 1338
+ DCW -2759
+ DCW 2126
+ DCW 2118
+ DCW -3980
+ DCW 2277
+ DCW -600
+ DCW -176
+ DCW 2587
+ DCW -1728
+ DCW 533
+ DCW -1258
+ DCW -910
+ DCW 1074
+ DCW 830
+ DCW 1703
+ DCW -1996
+ DCW -1984
+ DCW -751
+ DCW 2592
+ DCW 302
+ DCW 88
+ DCW 608
+ DCW -4621
+ DCW 2843
+ DCW 595
+ DCW -235
+ DCW 2759
+ DCW -3879
+ DCW -92
+ DCW 1099
+ DCW 1375
+ DCW 403
+ DCW -1979
+ DCW 1065
+ DCW -1006
+ DCW 486
+ DCW 1036
+ DCW -1199
+ DCW -38
+ DCW 109
+ DCW -491
+ DCW -348
+ DCW 1908
+ DCW -1338
+ DCW -952
+ DCW 1434
+ DCW -2415
+ DCW 1879
+ DCW 1464
+ DCW -1703
+ DCW 1157
+ DCW -1694
+ DCW 826
+ DCW 717
+ DCW 143
+ DCW 1233
+ DCW -3871
+ DCW 2231
+ DCW 1027
+ DCW -1694
+ DCW 2202
+ DCW -285
+ DCW -2990
+ DCW -793
+ DCW 4630
+ DCW -1510
+ DCW 264
+ DCW -654
+ DCW -3774
+ DCW 4948
+ DCW -893
+ DCW -906
+ DCW 2139
+ DCW -1556
+ DCW -1543
+ DCW 516
+ DCW 3887
+ DCW -2629
+ DCW -1841
+ DCW 2143
+ DCW -1279
+ DCW 2017
+ DCW -424
+ DCW -1375
+ DCW 843
+ DCW -474
+ DCW -570
+ DCW 650
+ DCW 2755
+ DCW -3493
+ DCW -713
+ DCW 2294
+ DCW -981
+ DCW 1841
+ DCW -985
+ DCW -310
+ DCW -1074
+ DCW -59
+ DCW 2202
+ DCW -1371
+ DCW 1459
+ DCW 50
+ DCW -3384
+ DCW 1090
+ DCW 2491
+ DCW -1531
+ DCW 478
+ DCW 725
+ DCW -2948
+ DCW 1698
+ DCW 1715
+ DCW -2445
+ DCW 1619
+ DCW -583
+ DCW -2025
+ DCW 3237
+ DCW -109
+ DCW -1627
+ DCW -478
+ DCW 566
+ DCW 1099
+ DCW -382
+ DCW 495
+ DCW -1656
+ DCW -226
+ DCW 1220
+ DCW -507
+ DCW 1589
+ DCW 38
+ DCW -2139
+ DCW -453
+ DCW 2097
+ DCW 457
+ DCW -1510
+ DCW 1103
+ DCW -705
+ DCW -474
+ DCW 604
+ DCW 520
+ DCW 902
+ DCW -1631
+ DCW 55
+ DCW -1241
+ DCW 1187
+ DCW 1359
+ DCW -2449
+ DCW 2378
+ DCW -621
+ DCW -2474
+ DCW 801
+ DCW 1895
+ DCW -252
+ DCW -470
+ DCW -155
+ DCW -2634
+ DCW 1971
+ DCW 1128
+ DCW 1782
+ DCW 63
+ DCW -4760
+ DCW 1053
+ DCW 1967
+ DCW -126
+ DCW -419
+ DCW -415
+ DCW -75
+ DCW -931
+ DCW 1178
+ DCW 2424
+ DCW -2558
+ DCW -1350
+ DCW 1564
+ DCW -197
+ DCW 805
+ DCW -872
+ DCW -478
+ DCW 1430
+ DCW -818
+ DCW -1204
+ DCW 1984
+ DCW 486
+ DCW -1686
+ DCW -134
+ DCW 499
+ DCW 1568
+ DCW -1455
+ DCW -1208
+ DCW 1250
+ DCW 327
+ DCW -80
+ DCW 143
+ DCW -621
+ DCW -1967
+ DCW 2709
+ DCW 2097
+ DCW -671
+ DCW -327
+ DCW -4080
+ DCW -889
+ DCW 5217
+ DCW 1250
+ DCW 499
+ DCW -3191
+ DCW -6341
+ DCW 6215
+ DCW 1627
+ DCW -700
+ DCW 3854
+ DCW -5296
+ DCW -3669
+ DCW 2441
+ DCW 3128
+ DCW 2210
+ DCW 688
+ DCW -6114
+ DCW -1111
+ DCW 2986
+ DCW -595
+ DCW 5024
+ DCW -1820
+ DCW -3133
+ DCW -1489
+ DCW -822
+ DCW 6408
+ DCW 88
+ DCW -2831
+ DCW -2298
+ END
+
\ No newline at end of file
diff --git a/PjtKEIL_Final/Src/principal.c b/PjtKEIL_Final/Src/principal.c
new file mode 100644
index 0000000..880a83c
--- /dev/null
+++ b/PjtKEIL_Final/Src/principal.c
@@ -0,0 +1,104 @@
+
+
+#include "DriverJeuLaser.h"
+#include "stdio.h"
+#include "Affichage_Valise.h"
+
+
+# define PERIODE 6552
+# define PERIODE_PWM 720
+# define F1 17
+# define F2 18
+# define F3 19
+# define F4 20
+# define F5 23
+# define F6 24
+
+extern int DFT_ModuleAuCarre(short int* , char);
+extern int DFT_reel(short int* , char);
+extern int DFT_imag(short int* , char);
+extern void CallbackSon(void);
+extern short int TabCos[];
+extern short int TabSin[];
+int resultat_module_carre [64];
+
+short int dma_buf [64];
+
+//void DFT_ModuleAuCarre( short int * Signal64ech, char k, long int * resultat){
+// int acumReel = 0;
+// int acumImag = 0;
+// for (int i= 0; i< 64; i++){
+// acumReel += Signal64ech[i]*TabCos[(i*k)%64];
+// acumImag += Signal64ech[i]*TabSin[(i*k)%64];
+// }
+// *resultat = acumReel*acumReel + acumImag*acumImag;
+//}
+
+void callback_SysTick(){
+ Start_DMA1(64);
+ Wait_On_End_Of_DMA1();
+ Stop_DMA1;
+}
+
+
+int main(void)
+{
+
+// ===========================================================================
+// ============= INIT PERIPH (faites qu'une seule fois) =====================
+// ===========================================================================
+
+
+
+// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
+CLOCK_Configure();
+
+
+// ------------------------ Config DFT ------------------------------
+
+// Config Timer (Interruptions toutes les 5ms)
+int periode_ticks = 360000; // pour avoir une interruption toutes les 5ms
+char prio = 0; // Eventuellement à changer quand fusion avec le son
+Systick_Period_ff(periode_ticks);
+Systick_Prio_IT(prio, callback_SysTick);
+SysTick_On;
+SysTick_Enable_IT;
+
+
+
+// Config ADC (mesure pendant 200 µs)
+
+Init_TimingADC_ActiveADC_ff(ADC1, 72);
+Single_Channel_ADC(ADC1, 2);
+Init_Conversion_On_Trig_Timer_ff(ADC1, TIM2_CC2, 225);
+Init_ADC1_DMA1(0, dma_buf);
+
+
+
+// ------------------------ Config Son ------------------------------
+
+Timer_1234_Init_ff(TIM4,PERIODE);
+Active_IT_Debordement_Timer(TIM4, 2, CallbackSon);
+
+//Timer_1234_Init_ff(TIM3,PERIODE_PWM);
+
+PWM_Init_ff( TIM3, 3, 720);
+
+
+GPIO_Configure(GPIOB, 0, OUTPUT, ALT_PPULL);
+
+
+
+
+
+
+while (1)
+ {
+
+ for(int k = 0; k < 64; k++){
+
+ resultat_module_carre[k] = DFT_ModuleAuCarre(dma_buf,k);
+ }
+ }
+}
+
diff --git a/PjtKEIL_Final/Src/startup-rvds.s b/PjtKEIL_Final/Src/startup-rvds.s
new file mode 100644
index 0000000..a7b631a
--- /dev/null
+++ b/PjtKEIL_Final/Src/startup-rvds.s
@@ -0,0 +1,335 @@
+;******************** (C) COPYRIGHT 2011 STMicroelectronics ********************
+;* File Name : startup_stm32f10x_md.s
+;* Author : MCD Application Team
+;* Version : V3.5.0
+;* Date : 11-March-2011
+;* Description : STM32F10x Medium Density Devices vector table for MDK-ARM
+;* toolchain.
+;* This module performs:
+;* - Set the initial SP
+;* - Set the initial PC == Reset_Handler
+;* - Set the vector table entries with the exceptions ISR address
+;* - Configure the clock system
+;* - Branches to __main in the C library (which eventually
+;* calls main()).
+;* After Reset the CortexM3 processor is in Thread mode,
+;* priority is Privileged, and the Stack is set to Main.
+;* <<< Use Configuration Wizard in Context Menu >>>
+;*******************************************************************************
+; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
+; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
+; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
+; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
+; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
+; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
+;*******************************************************************************
+
+; Amount of memory (in bytes) allocated for Stack
+; Tailor this value to your application needs
+; Stack Configuration
+; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+;
+
+Stack_Size EQU 0x00000400
+
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
+Stack_Mem SPACE Stack_Size
+__initial_sp
+
+
+; Heap Configuration
+; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+;
+
+Heap_Size EQU 0x00000200
+
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE Heap_Size
+__heap_limit
+
+ PRESERVE8
+ THUMB
+
+
+; Vector Table Mapped to Address 0 at Reset
+ AREA RESET, DATA, READONLY
+ EXPORT __Vectors
+ EXPORT __Vectors_End
+ EXPORT __Vectors_Size
+
+__Vectors DCD __initial_sp ; Top of Stack
+ DCD Reset_Handler ; Reset Handler
+ DCD NMI_Handler ; NMI Handler
+ DCD HardFault_Handler ; Hard Fault Handler
+ DCD MemManage_Handler ; MPU Fault Handler
+ DCD BusFault_Handler ; Bus Fault Handler
+ DCD UsageFault_Handler ; Usage Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; SVCall Handler
+ DCD DebugMon_Handler ; Debug Monitor Handler
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; PendSV Handler
+ DCD SysTick_Handler ; SysTick Handler
+
+ ; External Interrupts
+ DCD WWDG_IRQHandler ; Window Watchdog
+ DCD PVD_IRQHandler ; PVD through EXTI Line detect
+ DCD TAMPER_IRQHandler ; Tamper
+ DCD RTC_IRQHandler ; RTC
+ DCD FLASH_IRQHandler ; Flash
+ DCD RCC_IRQHandler ; RCC
+ DCD EXTI0_IRQHandler ; EXTI Line 0
+ DCD EXTI1_IRQHandler ; EXTI Line 1
+ DCD EXTI2_IRQHandler ; EXTI Line 2
+ DCD EXTI3_IRQHandler ; EXTI Line 3
+ DCD EXTI4_IRQHandler ; EXTI Line 4
+ DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1
+ DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2
+ DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3
+ DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4
+ DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5
+ DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6
+ DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7
+ DCD ADC1_2_IRQHandler ; ADC1_2
+ DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX
+ DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0
+ DCD CAN1_RX1_IRQHandler ; CAN1 RX1
+ DCD CAN1_SCE_IRQHandler ; CAN1 SCE
+ DCD EXTI9_5_IRQHandler ; EXTI Line 9..5
+ DCD TIM1_BRK_IRQHandler ; TIM1 Break
+ DCD TIM1_UP_IRQHandler ; TIM1 Update
+ DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation
+ DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
+ DCD TIM2_IRQHandler ; TIM2
+ DCD TIM3_IRQHandler ; TIM3
+ DCD TIM4_IRQHandler ; TIM4
+ DCD I2C1_EV_IRQHandler ; I2C1 Event
+ DCD I2C1_ER_IRQHandler ; I2C1 Error
+ DCD I2C2_EV_IRQHandler ; I2C2 Event
+ DCD I2C2_ER_IRQHandler ; I2C2 Error
+ DCD SPI1_IRQHandler ; SPI1
+ DCD SPI2_IRQHandler ; SPI2
+ DCD USART1_IRQHandler ; USART1
+ DCD USART2_IRQHandler ; USART2
+ DCD USART3_IRQHandler ; USART3
+ DCD EXTI15_10_IRQHandler ; EXTI Line 15..10
+ DCD RTCAlarm_IRQHandler ; RTC Alarm through EXTI Line
+ DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend
+__Vectors_End
+
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ AREA |.text|, CODE, READONLY
+
+; Reset handler
+Reset_Handler PROC
+ EXPORT Reset_Handler [WEAK]
+ IMPORT __main
+
+ LDR R0, =SystemInit
+ BLX R0
+
+;
+; Enable UsageFault, MemFault and Busfault interrupts
+;
+_SHCSR EQU 0xE000ED24 ; SHCSR is located at address 0xE000ED24
+ LDR.W R0, =_SHCSR
+ LDR R1, [R0] ; Read CPACR
+ ORR R1, R1, #(0x7 << 16) ; Set bits 16,17,18 to enable usagefault, busfault, memfault interrupts
+ STR R1, [R0] ; Write back the modified value to the CPACR
+ DSB ; Wait for store to complete
+
+;
+; Set priority grouping (PRIGROUP) in AIRCR to 3 (16 levels for group priority and 0 for subpriority)
+;
+_AIRCR EQU 0xE000ED0C
+_AIRCR_VAL EQU 0x05FA0300
+ LDR.W R0, =_AIRCR
+ LDR.W R1, =_AIRCR_VAL
+ STR R1,[R0]
+
+;
+; Finaly, jump to main function (void main (void))
+;
+ LDR R0, =__main
+ BX R0
+ ENDP
+
+SystemInit PROC
+ EXPORT SystemInit [WEAK]
+ BX LR
+ ENDP
+
+; Dummy Exception Handlers (infinite loops which can be modified)
+
+NMI_Handler PROC
+ EXPORT NMI_Handler [WEAK]
+ B .
+ ENDP
+HardFault_Handler\
+ PROC
+ EXPORT HardFault_Handler [WEAK]
+ B .
+ ENDP
+MemManage_Handler\
+ PROC
+ EXPORT MemManage_Handler [WEAK]
+ B .
+ ENDP
+BusFault_Handler\
+ PROC
+ EXPORT BusFault_Handler [WEAK]
+ B .
+ ENDP
+UsageFault_Handler\
+ PROC
+ EXPORT UsageFault_Handler [WEAK]
+ B .
+ ENDP
+SVC_Handler PROC
+ EXPORT SVC_Handler [WEAK]
+ B .
+ ENDP
+DebugMon_Handler\
+ PROC
+ EXPORT DebugMon_Handler [WEAK]
+ B .
+ ENDP
+PendSV_Handler PROC
+ EXPORT PendSV_Handler [WEAK]
+ B .
+ ENDP
+SysTick_Handler PROC
+ EXPORT SysTick_Handler [WEAK]
+ B .
+ ENDP
+
+Default_Handler PROC
+
+ EXPORT WWDG_IRQHandler [WEAK]
+ EXPORT PVD_IRQHandler [WEAK]
+ EXPORT TAMPER_IRQHandler [WEAK]
+ EXPORT RTC_IRQHandler [WEAK]
+ EXPORT FLASH_IRQHandler [WEAK]
+ EXPORT RCC_IRQHandler [WEAK]
+ EXPORT EXTI0_IRQHandler [WEAK]
+ EXPORT EXTI1_IRQHandler [WEAK]
+ EXPORT EXTI2_IRQHandler [WEAK]
+ EXPORT EXTI3_IRQHandler [WEAK]
+ EXPORT EXTI4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel1_IRQHandler [WEAK]
+ EXPORT DMA1_Channel2_IRQHandler [WEAK]
+ EXPORT DMA1_Channel3_IRQHandler [WEAK]
+ EXPORT DMA1_Channel4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel5_IRQHandler [WEAK]
+ EXPORT DMA1_Channel6_IRQHandler [WEAK]
+ EXPORT DMA1_Channel7_IRQHandler [WEAK]
+ EXPORT ADC1_2_IRQHandler [WEAK]
+ EXPORT USB_HP_CAN1_TX_IRQHandler [WEAK]
+ EXPORT USB_LP_CAN1_RX0_IRQHandler [WEAK]
+ EXPORT CAN1_RX1_IRQHandler [WEAK]
+ EXPORT CAN1_SCE_IRQHandler [WEAK]
+ EXPORT EXTI9_5_IRQHandler [WEAK]
+ EXPORT TIM1_BRK_IRQHandler [WEAK]
+ EXPORT TIM1_UP_IRQHandler [WEAK]
+ EXPORT TIM1_TRG_COM_IRQHandler [WEAK]
+ EXPORT TIM1_CC_IRQHandler [WEAK]
+ EXPORT TIM2_IRQHandler [WEAK]
+ EXPORT TIM3_IRQHandler [WEAK]
+ EXPORT TIM4_IRQHandler [WEAK]
+ EXPORT I2C1_EV_IRQHandler [WEAK]
+ EXPORT I2C1_ER_IRQHandler [WEAK]
+ EXPORT I2C2_EV_IRQHandler [WEAK]
+ EXPORT I2C2_ER_IRQHandler [WEAK]
+ EXPORT SPI1_IRQHandler [WEAK]
+ EXPORT SPI2_IRQHandler [WEAK]
+ EXPORT USART1_IRQHandler [WEAK]
+ EXPORT USART2_IRQHandler [WEAK]
+ EXPORT USART3_IRQHandler [WEAK]
+ EXPORT EXTI15_10_IRQHandler [WEAK]
+ EXPORT RTCAlarm_IRQHandler [WEAK]
+ EXPORT USBWakeUp_IRQHandler [WEAK]
+
+WWDG_IRQHandler
+PVD_IRQHandler
+TAMPER_IRQHandler
+RTC_IRQHandler
+FLASH_IRQHandler
+RCC_IRQHandler
+EXTI0_IRQHandler
+EXTI1_IRQHandler
+EXTI2_IRQHandler
+EXTI3_IRQHandler
+EXTI4_IRQHandler
+DMA1_Channel1_IRQHandler
+DMA1_Channel2_IRQHandler
+DMA1_Channel3_IRQHandler
+DMA1_Channel4_IRQHandler
+DMA1_Channel5_IRQHandler
+DMA1_Channel6_IRQHandler
+DMA1_Channel7_IRQHandler
+ADC1_2_IRQHandler
+USB_HP_CAN1_TX_IRQHandler
+USB_LP_CAN1_RX0_IRQHandler
+CAN1_RX1_IRQHandler
+CAN1_SCE_IRQHandler
+EXTI9_5_IRQHandler
+TIM1_BRK_IRQHandler
+TIM1_UP_IRQHandler
+TIM1_TRG_COM_IRQHandler
+TIM1_CC_IRQHandler
+TIM2_IRQHandler
+TIM3_IRQHandler
+TIM4_IRQHandler
+I2C1_EV_IRQHandler
+I2C1_ER_IRQHandler
+I2C2_EV_IRQHandler
+I2C2_ER_IRQHandler
+SPI1_IRQHandler
+SPI2_IRQHandler
+USART1_IRQHandler
+USART2_IRQHandler
+USART3_IRQHandler
+EXTI15_10_IRQHandler
+RTCAlarm_IRQHandler
+USBWakeUp_IRQHandler
+
+ B .
+
+ ENDP
+
+ ALIGN
+
+;*******************************************************************************
+; User Stack and Heap initialization
+;*******************************************************************************
+ IF :DEF:__MICROLIB
+
+ EXPORT __initial_sp
+ EXPORT __heap_base
+ EXPORT __heap_limit
+
+ ELSE
+
+ IMPORT __use_two_region_memory
+ EXPORT __user_initial_stackheap
+
+__user_initial_stackheap
+
+ LDR R0, = Heap_Mem
+ LDR R1, =(Stack_Mem + Stack_Size)
+ LDR R2, = (Heap_Mem + Heap_Size)
+ LDR R3, = Stack_Mem
+ BX LR
+
+ ALIGN
+
+ ENDIF
+
+ END
+
+;******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE*****
diff --git a/PjtKEIL_Final/StepDFT.uvprojx b/PjtKEIL_Final/StepDFT.uvprojx
new file mode 100644
index 0000000..245f978
--- /dev/null
+++ b/PjtKEIL_Final/StepDFT.uvprojx
@@ -0,0 +1,1437 @@
+
+
+
+ 2.1
+
+ ### uVision Project, (C) Keil Software
+
+
+
+ Simu
+ 0x4
+ ARM-ADS
+ 5060960::V5.06 update 7 (build 960)::.\ARMCC
+ 0
+
+
+ STM32F103RB
+ STMicroelectronics
+ Keil.STM32F1xx_DFP.2.3.0
+ http://www.keil.com/pack/
+ IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3")
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $$Device:STM32F103RB$SVD\STM32F103xx.svd
+ 0
+ 0
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 1
+
+ .\Obj\
+ StepDFT
+ 1
+ 0
+ 1
+ 1
+ 1
+
+ 1
+ 0
+ 0
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+ 0
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 3
+
+
+ 0
+
+
+ SARMCM3.DLL
+ -REMAP
+ DARMSTM.DLL
+ -pSTM32F103RB
+ SARMCM3.DLL
+
+ TCM.DLL
+ -pCM3
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 16
+
+
+
+
+ 1
+ 0
+ 0
+ 1
+ 1
+ 4100
+
+ 1
+ STLink\ST-LINKIII-KEIL_SWO.dll
+ "" ()
+
+
+
+
+ 0
+
+
+
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ "Cortex-M3"
+
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 8
+ 1
+ 0
+ 0
+ 0
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x20000000
+ 0x5000
+
+
+ 1
+ 0x8000000
+ 0x20000
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x8000000
+ 0x20000
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x20000000
+ 0x5000
+
+
+ 0
+ 0x0
+ 0x0
+
+
+
+
+
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+
+ --C99
+ STM32F103xB,USE_FULL_LL_DRIVER
+
+ .\Driver;.\ModuleAffichage
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 4
+
+
+
+
+
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0x08000000
+ 0x20000000
+
+
+
+
+
+
+
+
+
+
+
+
+ Sources
+
+
+ principal.c
+ 1
+ .\Src\principal.c
+
+
+ Signal.asm
+ 2
+ .\Obj\Signal.asm
+
+
+ DFT.s
+ 2
+ .\Src\DFT.s
+
+
+ bruitverre.asm
+ 2
+ .\Src\bruitverre.asm
+
+
+ GestionSon.s
+ 2
+ .\Src\GestionSon.s
+
+
+
+
+ Sys
+
+
+ startup-rvds.s
+ 2
+ .\Src\startup-rvds.s
+
+
+
+
+ Driver
+
+
+ DriverJeuLaser.lib
+ 4
+ .\Driver\DriverJeuLaser.lib
+
+
+ DriverJeuLaser.inc
+ 5
+ .\Driver\DriverJeuLaser.inc
+
+
+ DriverJeuLaser_1.inc
+ 5
+ .\Driver\DriverJeuLaser_1.inc
+
+
+ DriverJeuLaser_1.lib
+ 4
+ .\Driver\DriverJeuLaser_1.lib
+
+
+
+
+ ::CMSIS
+
+
+
+
+ CibleSondeKEIL
+ 0x4
+ ARM-ADS
+ 5060750::V5.06 update 6 (build 750)::.\ARMCC
+ 0
+
+
+ STM32F103RB
+ STMicroelectronics
+ Keil.STM32F1xx_DFP.2.3.0
+ http://www.keil.com/pack/
+ IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3")
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $$Device:STM32F103RB$SVD\STM32F103xx.svd
+ 0
+ 0
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 1
+
+ .\Obj\
+ StepDFT
+ 1
+ 0
+ 1
+ 1
+ 1
+
+ 1
+ 0
+ 0
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+ 0
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 3
+
+
+ 0
+
+
+ SARMCM3.DLL
+ -REMAP
+ DARMSTM.DLL
+ -pSTM32F103RB
+ SARMCM3.DLL
+
+ TCM.DLL
+ -pCM3
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 16
+
+
+
+
+ 1
+ 0
+ 0
+ 1
+ 1
+ 4100
+
+ 1
+ STLink\ST-LINKIII-KEIL_SWO.dll
+ "" ()
+
+
+
+
+ 0
+
+
+
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ "Cortex-M3"
+
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 8
+ 1
+ 0
+ 0
+ 0
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x20000000
+ 0x5000
+
+
+ 1
+ 0x8000000
+ 0x20000
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x8000000
+ 0x20000
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x20000000
+ 0x5000
+
+
+ 0
+ 0x0
+ 0x0
+
+
+
+
+
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+
+ --C99
+ STM32F103xB,USE_FULL_LL_DRIVER
+
+ .\Driver
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 4
+
+
+
+
+
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0x08000000
+ 0x20000000
+
+
+
+
+
+
+
+
+
+
+
+
+ Sources
+
+
+ principal.c
+ 1
+ .\Src\principal.c
+
+
+ Signal.asm
+ 2
+ .\Obj\Signal.asm
+
+
+ DFT.s
+ 2
+ .\Src\DFT.s
+
+
+ bruitverre.asm
+ 2
+ .\Src\bruitverre.asm
+
+
+ GestionSon.s
+ 2
+ .\Src\GestionSon.s
+
+
+
+
+ Sys
+
+
+ startup-rvds.s
+ 2
+ .\Src\startup-rvds.s
+
+
+
+
+ Driver
+
+
+ DriverJeuLaser.lib
+ 4
+ .\Driver\DriverJeuLaser.lib
+
+
+ DriverJeuLaser.inc
+ 5
+ .\Driver\DriverJeuLaser.inc
+
+
+ DriverJeuLaser_1.inc
+ 5
+ .\Driver\DriverJeuLaser_1.inc
+
+
+ DriverJeuLaser_1.lib
+ 4
+ .\Driver\DriverJeuLaser_1.lib
+
+
+
+
+ ::CMSIS
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 2
+ 2
+ 2
+ 11
+
+
+ 1
+
+
+
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+
+
+
+
+
+
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CibleSondeST
+ 0x4
+ ARM-ADS
+ 5060750::V5.06 update 6 (build 750)::.\ARMCC
+ 0
+
+
+ STM32F103RB
+ STMicroelectronics
+ Keil.STM32F1xx_DFP.2.3.0
+ http://www.keil.com/pack/
+ IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3")
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $$Device:STM32F103RB$SVD\STM32F103xx.svd
+ 0
+ 0
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 1
+
+ .\Obj\
+ StepDFT
+ 1
+ 0
+ 1
+ 1
+ 1
+
+ 1
+ 0
+ 0
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+ 0
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 3
+
+
+ 0
+
+
+ SARMCM3.DLL
+ -REMAP
+ DARMSTM.DLL
+ -pSTM32F103RB
+ SARMCM3.DLL
+
+ TCM.DLL
+ -pCM3
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 16
+
+
+
+
+ 1
+ 0
+ 0
+ 1
+ 1
+ 4100
+
+ 1
+ STLink\ST-LINKIII-KEIL_SWO.dll
+ "" ()
+
+
+
+
+ 0
+
+
+
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ "Cortex-M3"
+
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 8
+ 1
+ 0
+ 0
+ 0
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x20000000
+ 0x5000
+
+
+ 1
+ 0x8000000
+ 0x20000
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x8000000
+ 0x20000
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x20000000
+ 0x5000
+
+
+ 0
+ 0x0
+ 0x0
+
+
+
+
+
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+
+ --C99
+ STM32F103xB,USE_FULL_LL_DRIVER
+
+ .\Driver
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 4
+
+
+
+
+
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0x08000000
+ 0x20000000
+
+
+
+
+
+
+
+
+
+
+
+
+ Sources
+
+
+ principal.c
+ 1
+ .\Src\principal.c
+
+
+ Signal.asm
+ 2
+ .\Obj\Signal.asm
+
+
+ DFT.s
+ 2
+ .\Src\DFT.s
+
+
+ bruitverre.asm
+ 2
+ .\Src\bruitverre.asm
+
+
+ GestionSon.s
+ 2
+ .\Src\GestionSon.s
+
+
+
+
+ Sys
+
+
+ startup-rvds.s
+ 2
+ .\Src\startup-rvds.s
+
+
+
+
+ Driver
+
+
+ DriverJeuLaser.lib
+ 4
+ .\Driver\DriverJeuLaser.lib
+
+
+ DriverJeuLaser.inc
+ 5
+ .\Driver\DriverJeuLaser.inc
+
+
+ DriverJeuLaser_1.inc
+ 5
+ .\Driver\DriverJeuLaser_1.inc
+
+
+ DriverJeuLaser_1.lib
+ 4
+ .\Driver\DriverJeuLaser_1.lib
+
+
+
+
+ ::CMSIS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <Project Info>
+ 0
+ 1
+
+
+
+
+
diff --git a/PjtKEIL_Final/rep_questions.md b/PjtKEIL_Final/rep_questions.md
new file mode 100644
index 0000000..84c5166
--- /dev/null
+++ b/PjtKEIL_Final/rep_questions.md
@@ -0,0 +1,38 @@
+1. Déterminer les 6 valeurs de k (k1 à k6) correspondant aux 6 fréquences des pistolets ( voir votre
+rapport intermédiaire ou le sujet signal de la partie I, sur Moodle)
+
+Les valeurs de k qui nous interessent sont :
+
+Fréquence (en kHz) | 85 | 90 | 95 | 100 | 115| 120 |
+|---|---|---|---|---|---|---|
+| K | 17 | 18 | 19 | 20 | 23 | 24 |
+
+La graduation des fréquence est donnée par
+$$
+\delta \omega = \frac{1}{T} = 5000 kHz
+$$
+
+ainsi:
+
+$$
+k_n = \frac{f_n}{5000 kHz}
+$$
+
+2. Le codage fonctionne de la même maniére que le complément à deux avec des valeur fractionnaire.
+Considérons un codage A.B sur x bits
+Les nombre de ce codage étant représentés par :
+$b_{x-1}b_{x-2} \dots b_2b_1b_0$
+
+Si le nombre est compris entre 00000...0 et 0111...1
+La valeur décimale du nombre est donnée par :
+$$\sum_{i=0}^{x-1} b_i \times 2^{i-B}$$
+Et si le nombre est compris entre 100..00 et 11...111
+
+La valeur décimale du nombre est donnée par :
+$$-\sum_{i=0}^{x-1} (b_i-1) \times 2^{i-B}$$
+
+$$0x02C1 \to 0b 0000 0010 1100 0001 \to 2^{-3}+2^{-5}+2^{-6}+2^{-12}= 0.172119140625$$
+
+$$0xFE01 \to 0b 1111 1110 0000 0001 \to \sum^{-4}_{i=-11} 2^{i} \text{car nombre négatif} = -0.124755859375$$
+
+
diff --git a/PjtKEIL_Final/rep_questions.txt b/PjtKEIL_Final/rep_questions.txt
new file mode 100644
index 0000000..e69de29