diff --git a/Downstream/.cproject b/Downstream/.cproject
index e7f3c64..2f3dd93 100644
--- a/Downstream/.cproject
+++ b/Downstream/.cproject
@@ -79,6 +79,7 @@
+
@@ -91,7 +92,7 @@
-
+
@@ -131,7 +132,7 @@
-
+
@@ -140,7 +141,7 @@
-
+
@@ -153,6 +154,12 @@
+
+
+
+
+
+
@@ -176,6 +183,11 @@
+
+
+
@@ -183,6 +195,7 @@
+
diff --git a/Downstream/.settings/language.settings.xml b/Downstream/.settings/language.settings.xml
index 7febaad..7a9fc8b 100644
--- a/Downstream/.settings/language.settings.xml
+++ b/Downstream/.settings/language.settings.xml
@@ -16,7 +16,7 @@
-
+
diff --git a/Downstream/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/Downstream/.settings/org.eclipse.cdt.managedbuilder.core.prefs
index a78566d..3c47024 100644
--- a/Downstream/.settings/org.eclipse.cdt.managedbuilder.core.prefs
+++ b/Downstream/.settings/org.eclipse.cdt.managedbuilder.core.prefs
@@ -5,7 +5,17 @@ environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.
environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.110983800/C_INCLUDE_PATH/operation=remove
environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.110983800/append=true
environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.110983800/appendContributed=true
+environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/CPATH/delimiter=\:
+environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/CPATH/operation=remove
+environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/C_INCLUDE_PATH/delimiter=\:
+environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/C_INCLUDE_PATH/operation=remove
+environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/append=true
+environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/appendContributed=true
environment/buildEnvironmentLibrary/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.110983800/LIBRARY_PATH/delimiter=\:
environment/buildEnvironmentLibrary/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.110983800/LIBRARY_PATH/operation=remove
environment/buildEnvironmentLibrary/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.110983800/append=true
environment/buildEnvironmentLibrary/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.110983800/appendContributed=true
+environment/buildEnvironmentLibrary/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/LIBRARY_PATH/delimiter=\:
+environment/buildEnvironmentLibrary/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/LIBRARY_PATH/operation=remove
+environment/buildEnvironmentLibrary/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/append=true
+environment/buildEnvironmentLibrary/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/appendContributed=true
diff --git a/Downstream/Downstream Debug.launch b/Downstream/Downstream Debug.launch
index 5f7fe32..e9b4910 100644
--- a/Downstream/Downstream Debug.launch
+++ b/Downstream/Downstream Debug.launch
@@ -1,6 +1,6 @@
-
+
@@ -61,6 +61,6 @@
-
+
diff --git a/Downstream/Downstream Release.launch b/Downstream/Downstream Release.launch
new file mode 100644
index 0000000..2eb546d
--- /dev/null
+++ b/Downstream/Downstream Release.launch
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c b/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c
index 22ed0db..0ff780e 100644
--- a/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c
+++ b/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c
@@ -451,7 +451,7 @@ void HAL_HCD_IRQHandler(HCD_HandleTypeDef *hhcd)
USB_OTG_GlobalTypeDef *USBx = hhcd->Instance;
uint32_t i = 0 , interrupt = 0;
- /* Ensure that we are in device mode */
+ /* Ensure that we are in host mode */
if (USB_GetMode(hhcd->Instance) == USB_OTG_MODE_HOST)
{
/* Avoid spurious interrupt */
@@ -821,7 +821,6 @@ static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum)
else if ((USBx_HC(chnum)->HCINT) & USB_OTG_HCINT_XFRC)
{
-
if (hhcd->Init.dma_enable)
{
hhcd->hc[chnum].xfer_count = hhcd->hc[chnum].xfer_len - \
@@ -862,10 +861,11 @@ static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum)
else if (hhcd->hc[chnum].state == HC_STALL)
{
hhcd->hc[chnum].urb_state = URB_STALL;
- }
+ }
else if((hhcd->hc[chnum].state == HC_XACTERR) ||
- (hhcd->hc[chnum].state == HC_DATATGLERR))
+ (hhcd->hc[chnum].state == HC_DATATGLERR) ||
+ (hhcd->hc[chnum].state == HC_NAK))
{
if(hhcd->hc[chnum].ErrCnt++ > 3)
{
@@ -897,20 +897,21 @@ static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum)
}
else if ((USBx_HC(chnum)->HCINT) & USB_OTG_HCINT_NAK)
{
- if(hhcd->hc[chnum].ep_type == EP_TYPE_INTR)
- {
+ hhcd->hc[chnum].ErrCnt = 0;
+// if(hhcd->hc[chnum].ep_type == EP_TYPE_INTR)
+// {
__HAL_HCD_UNMASK_HALT_HC_INT(chnum);
USB_HC_Halt(hhcd->Instance, chnum);
- }
- else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL)||
- (hhcd->hc[chnum].ep_type == EP_TYPE_BULK))
- {
- /* re-activate the channel */
- tmpreg = USBx_HC(chnum)->HCCHAR;
- tmpreg &= ~USB_OTG_HCCHAR_CHDIS;
- tmpreg |= USB_OTG_HCCHAR_CHENA;
- USBx_HC(chnum)->HCCHAR = tmpreg;
- }
+// }
+// else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL)||
+// (hhcd->hc[chnum].ep_type == EP_TYPE_BULK))
+// {
+// /* re-activate the channel */
+// tmpreg = USBx_HC(chnum)->HCCHAR;
+// tmpreg &= ~USB_OTG_HCCHAR_CHDIS;
+// tmpreg |= USB_OTG_HCCHAR_CHENA;
+// USBx_HC(chnum)->HCCHAR = tmpreg;
+// }
hhcd->hc[chnum].state = HC_NAK;
__HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK);
}
@@ -1020,10 +1021,10 @@ static void HCD_HC_OUT_IRQHandler (HCD_HandleTypeDef *hhcd, uint8_t chnum)
hhcd->hc[chnum].toggle_out ^= 1;
}
}
- else if (hhcd->hc[chnum].state == HC_NAK)
+ else if (hhcd->hc[chnum].state == HC_NAK)
{
hhcd->hc[chnum].urb_state = URB_NOTREADY;
- }
+ }
else if (hhcd->hc[chnum].state == HC_NYET)
{
diff --git a/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c b/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
index b8ee9e0..b5f3405 100644
--- a/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
+++ b/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
@@ -102,7 +102,7 @@
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
-#define SPI_TIMEOUT_VALUE 10
+#define SPI_TIMEOUT_VALUE 2
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
@@ -1933,6 +1933,8 @@ static void SPI_RxISR(SPI_HandleTypeDef *hspi)
*/
static void SPI_DMATransmitCplt(DMA_HandleTypeDef *hdma)
{
+ __IO uint16_t tmpreg;
+
SPI_HandleTypeDef* hspi = ( SPI_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
/* DMA Normal Mode */
@@ -1963,7 +1965,7 @@ static void SPI_DMATransmitCplt(DMA_HandleTypeDef *hdma)
__HAL_SPI_CLEAR_OVRFLAG(hspi);
}
- /* Check if Errors has been detected during transfer */
+ /* Check if Errors has been detected during transfer */
if(hspi->ErrorCode != HAL_SPI_ERROR_NONE)
{
HAL_SPI_ErrorCallback(hspi);
@@ -2066,14 +2068,14 @@ static void SPI_DMAEndTransmitReceive(SPI_HandleTypeDef *hspi)
if(hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)
{
/* Check if CRC is done on going (RXNE flag set) */
- if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_TIMEOUT_VALUE) == HAL_OK)
- {
+// if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_TIMEOUT_VALUE) == HAL_OK)
+// {
/* Wait until RXNE flag is set to send data */
if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_RXNE, RESET, SPI_TIMEOUT_VALUE) != HAL_OK)
{
hspi->ErrorCode |= HAL_SPI_ERROR_FLAG;
}
- }
+// }
/* Read CRC */
tmpreg = hspi->Instance->DR;
UNUSED(tmpreg);
@@ -2097,7 +2099,10 @@ static void SPI_DMAEndTransmitReceive(SPI_HandleTypeDef *hspi)
/* Wait until Busy flag is reset before disabling SPI */
if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_BSY, SET, SPI_TIMEOUT_VALUE) != HAL_OK)
{
- hspi->ErrorCode |= HAL_SPI_ERROR_FLAG;
+ //The Busy flag occasionally fails to reset within timeout. No idea why.
+ //But in this case WaitOnFlagUntilTimeout disables the SPI for us,
+ //so we can ignore the error and carry on.
+ //hspi->ErrorCode |= HAL_SPI_ERROR_FLAG;
}
/* Disable Rx DMA Request */
@@ -2121,7 +2126,7 @@ static void SPI_DMATransmitReceiveCplt(DMA_HandleTypeDef *hdma)
SPI_DMAEndTransmitReceive(hspi);
hspi->State = HAL_SPI_STATE_READY;
-
+
/* Check if Errors has been detected during transfer */
if(hspi->ErrorCode != HAL_SPI_ERROR_NONE)
{
diff --git a/Downstream/Inc/board_config.h b/Downstream/Inc/board_config.h
index c319324..62762f9 100644
--- a/Downstream/Inc/board_config.h
+++ b/Downstream/Inc/board_config.h
@@ -40,10 +40,10 @@
#define FAULT_LED_OFF STAT_LED_OFF
-//#define SPI_DMA_ACTIVE_PIN GPIO_PIN_5 /////////Temporary indicator of SPI & DMA activity
-//#define SPI_DMA_ACTIVE_PORT GPIOB
-//#define SPI_DMA_ACTIVE_ON SPI_DMA_ACTIVE_PORT->BSRR = (SPI_DMA_ACTIVE_PIN << BSRR_SHIFT_LOW)
-//#define SPI_DMA_ACTIVE_OFF SPI_DMA_ACTIVE_PORT->BSRR = (SPI_DMA_ACTIVE_PIN << BSRR_SHIFT_HIGH)
+#define SPI_INT_ACTIVE_PIN GPIO_PIN_2 /////////Temporary indicator of SPI activity
+#define SPI_INT_ACTIVE_PORT GPIOA
+#define SPI_INT_ACTIVE_ON SPI_INT_ACTIVE_PORT->BSRR = (SPI_INT_ACTIVE_PIN << BSRR_SHIFT_HIGH)
+#define SPI_INT_ACTIVE_OFF SPI_INT_ACTIVE_PORT->BSRR = (SPI_INT_ACTIVE_PIN << BSRR_SHIFT_LOW)
//#define SPI1_NSS_PIN GPIO_PIN_4
//#define SPI1_NSS_PORT GPIOA
diff --git a/Downstream/Inc/downstream_interface_def.h b/Downstream/Inc/downstream_interface_def.h
index 5c1c85f..e37d78d 100644
--- a/Downstream/Inc/downstream_interface_def.h
+++ b/Downstream/Inc/downstream_interface_def.h
@@ -43,8 +43,8 @@ typedef enum
{
COMMAND_MSC_TEST_UNIT_READY, //Returns HAL_StatusTypeDef result
COMMAND_MSC_GET_CAPACITY, //Returns uint32_t blk_nbr, uint32_t blk_size
- COMMAND_MSC_BEGIN_READ, //Returns HAL_StatusTypeDef result, then data stream
- COMMAND_MSC_BEGIN_WRITE, //Returns HAL_OK, HAL_ERROR if medium not present, HAL_BUSY if write-protected result, then waits for data stream
+ COMMAND_MSC_READ, //Returns HAL_StatusTypeDef result, then data stream
+ COMMAND_MSC_WRITE, //Returns HAL_OK, HAL_ERROR if medium not present, HAL_BUSY if write-protected result, then waits for data stream
}
InterfaceCommandMscTypeDef;
diff --git a/Downstream/Inc/downstream_msc.h b/Downstream/Inc/downstream_msc.h
index 168e163..dffe63e 100644
--- a/Downstream/Inc/downstream_msc.h
+++ b/Downstream/Inc/downstream_msc.h
@@ -17,13 +17,13 @@
typedef void (*DownstreamMSCCallbackPacketTypeDef)(DownstreamPacketTypeDef* receivedPacket,
- uint16_t dataLength);
+ uint16_t dataLength8);
HAL_StatusTypeDef Downstream_MSC_ApproveConnectedDevice(void);
void Downstream_MSC_PacketProcessor(DownstreamPacketTypeDef* receivedPacket);
HAL_StatusTypeDef Downstream_MSC_PutStreamDataPacket(DownstreamPacketTypeDef* packetToSend,
- uint32_t dataLength);
+ uint32_t dataLength8);
HAL_StatusTypeDef Downstream_MSC_GetStreamDataPacket(DownstreamMSCCallbackPacketTypeDef callback);
diff --git a/Downstream/Inc/downstream_spi.h b/Downstream/Inc/downstream_spi.h
index 9542e4a..309047e 100644
--- a/Downstream/Inc/downstream_spi.h
+++ b/Downstream/Inc/downstream_spi.h
@@ -12,16 +12,19 @@
#include "usbh_config.h"
-#define DOWNSTREAM_PACKET_HEADER_LEN (2) //Min length = CommandClass & Command bytes
-#define DOWNSTREAM_PACKET_LEN (DOWNSTREAM_PACKET_HEADER_LEN + USBH_MAX_DATA_BUFFER)
-#define DOWNSTREAM_PACKET_LEN_MIN (DOWNSTREAM_PACKET_HEADER_LEN)
+#define DOWNSTREAM_PACKET_HEADER_LEN (2) //Min length = CommandClass & Command bytes
+#define DOWNSTREAM_PACKET_LEN (DOWNSTREAM_PACKET_HEADER_LEN + USBH_MAX_DATA_BUFFER)
+#define DOWNSTREAM_PACKET_LEN_MIN (DOWNSTREAM_PACKET_HEADER_LEN)
+#define DOWNSTREAM_PACKET_HEADER_LEN_16 (DOWNSTREAM_PACKET_HEADER_LEN / 2)
+#define DOWNSTREAM_PACKET_LEN_16 (DOWNSTREAM_PACKET_LEN / 2)
+#define DOWNSTREAM_PACKET_LEN_MIN_16 (DOWNSTREAM_PACKET_LEN_MIN / 2)
#define DOWNSTREAM_SPI_FREAKOUT \
do { \
LED_Fault_SetBlinkRate(LED_FAST_BLINK_RATE); \
- Downstream_PacketProcessor_SetErrorState(); \
- DownstreamInterfaceState = DOWNSTREAM_INTERFACE_ERROR; \
+ /*Downstream_PacketProcessor_SetErrorState();*/ \
+ /*DownstreamInterfaceState = DOWNSTREAM_INTERFACE_ERROR;*/ \
while (1); \
} while (0);
@@ -50,11 +53,10 @@ PacketBusyTypeDef;
typedef struct
{
PacketBusyTypeDef Busy; //Everything after Busy should be word-aligned
- uint16_t Length __ALIGN_END; //Packet length includes CommandClass, Command, and Data
+ uint16_t Length16 __ALIGN_END; //Packet length includes CommandClass, Command, and Data
uint8_t CommandClass;
uint8_t Command;
uint8_t Data[USBH_MAX_DATA_BUFFER]; //Should (must?) be word-aligned, for USB copy routine
- uint8_t RxCrc;
}
DownstreamPacketTypeDef;
@@ -70,10 +72,9 @@ DownstreamPacketTypeDef* Downstream_GetFreePacketImmediately(void);
void Downstream_ReleasePacket(DownstreamPacketTypeDef* packetToRelease);
HAL_StatusTypeDef Downstream_ReceivePacket(SpiPacketReceivedCallbackTypeDef callback);
HAL_StatusTypeDef Downstream_TransmitPacket(DownstreamPacketTypeDef* packetToWrite);
+void Downstream_SPIProcess(void);
-void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi);
void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi);
-void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi);
void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi);
diff --git a/Downstream/Inc/interrupts.h b/Downstream/Inc/interrupts.h
index 3d94804..6771194 100644
--- a/Downstream/Inc/interrupts.h
+++ b/Downstream/Inc/interrupts.h
@@ -44,8 +44,9 @@
/* Exported constants --------------------------------------------------------*/
#define INT_PRIORITY_SYSTICK 2
-#define INT_PRIORITY_SPI_DMA 10 //SPI interacts heavily with USB_OTG,
-#define INT_PRIORITY_OTG_FS 10 //so set them at the same priority.
+//#define INT_PRIORITY_SPI_DMA 10
+#define INT_PRIORITY_SPI 8 //Interrupt-based SPI must be highest priority!
+#define INT_PRIORITY_OTG_FS 10
/* Exported macro ------------------------------------------------------------*/
diff --git a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc/usbh_msc_bot.h b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc/usbh_msc_bot.h
index 6164a86..f557a2d 100644
--- a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc/usbh_msc_bot.h
+++ b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc/usbh_msc_bot.h
@@ -89,9 +89,11 @@ BOT_CSWStatusTypeDef;
typedef enum {
BOT_SEND_CBW = 1,
BOT_SEND_CBW_WAIT,
- BOT_DATA_IN,
+ BOT_DATA_IN,
+ BOT_DATA_IN_WAIT_FREE_PACKET,
BOT_DATA_IN_WAIT,
BOT_DATA_OUT,
+ BOT_DATA_OUT_WAIT_RECEIVE_PACKET,
BOT_DATA_OUT_WAIT,
BOT_RECEIVE_CSW,
BOT_RECEIVE_CSW_WAIT,
diff --git a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc.c b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc.c
index e805fbd..d837ccb 100644
--- a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc.c
+++ b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc.c
@@ -477,19 +477,13 @@ static USBH_StatusTypeDef USBH_MSC_Process(USBH_HandleTypeDef *phost)
default:
break;
}
-
-#if (USBH_USE_OS == 1)
- osMessagePut ( phost->os_event, USBH_CLASS_EVENT, 0);
-#endif
}
else
{
- MSC_Handle->current_lun = 0;
- MSC_Handle->state = MSC_IDLE;
-#if (USBH_USE_OS == 1)
- osMessagePut ( phost->os_event, USBH_CLASS_EVENT, 0);
-#endif
- phost->pUser(phost, HOST_USER_CLASS_ACTIVE);
+ MSC_Handle->current_lun = 0;
+ MSC_Handle->state = MSC_IDLE;
+
+ phost->pUser(phost, HOST_USER_CLASS_ACTIVE);
}
break;
@@ -499,10 +493,6 @@ static USBH_StatusTypeDef USBH_MSC_Process(USBH_HandleTypeDef *phost)
case MSC_READ:
case MSC_WRITE:
- //USBH_MSC_RdWrProcess interacts heavily with downstream SPI code.
- //So to protect against preemption we elevate our priority here.
- __set_BASEPRI(INT_PRIORITY_OTG_FS);
-
error = USBH_MSC_RdWrProcess(phost, MSC_Handle->rw_lun);
if(((int32_t)(phost->Timer - MSC_Handle->timeout) > 0) || (phost->device.is_connected == 0))
{
@@ -518,8 +508,6 @@ static USBH_StatusTypeDef USBH_MSC_Process(USBH_HandleTypeDef *phost)
MSC_Handle->RdWrCompleteCallback = NULL;
}
}
-
- __set_BASEPRI(0);
break;
default:
diff --git a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_bot.c b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_bot.c
index 29576f8..13b667b 100644
--- a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_bot.c
+++ b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_bot.c
@@ -177,10 +177,10 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
break;
case BOT_DATA_IN:
- MSC_Handle->hbot.state = BOT_DATA_IN_WAIT;
if (MSC_Handle->hbot.pbuf != NULL)
{
//Simple single-buffer operation
+ MSC_Handle->hbot.state = BOT_DATA_IN_WAIT;
MSC_Handle->hbot.this_URB_size = MIN(MSC_Handle->hbot.cbw.field.DataTransferLength,
MSC_Handle->InEpSize);
USBH_BulkReceiveData (phost,
@@ -191,6 +191,7 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
else
{
//Asynchronous multi-packet operation: get first packet
+ MSC_Handle->hbot.state = BOT_DATA_IN_WAIT_FREE_PACKET;
Callback_MSC_phost = phost;
if (Downstream_GetFreePacket(USBH_MSC_BOT_Read_Multipacket_FreePacketCallback) != HAL_OK)
{
@@ -199,11 +200,19 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
}
break;
+ case BOT_DATA_IN_WAIT_FREE_PACKET:
+ break;
+
case BOT_DATA_IN_WAIT:
URB_Status = USBH_LL_GetURBState(phost, MSC_Handle->InPipe);
if (URB_Status == USBH_URB_DONE)
{
+ if (USBH_LL_GetLastXferSize(phost, MSC_Handle->InPipe) != MSC_Handle->hbot.this_URB_size)
+ {
+ while(1);
+ }
+
MSC_Handle->hbot.cbw.field.DataTransferLength -= MSC_Handle->hbot.this_URB_size;
if (MSC_Handle->hbot.pbuf != NULL)
@@ -236,6 +245,7 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
MSC_Handle->hbot.state = BOT_ERROR_IN;
break;
}
+ MSC_Handle->hbot.state = BOT_DATA_IN_WAIT_FREE_PACKET;
if (Downstream_GetFreePacket(USBH_MSC_BOT_Read_Multipacket_FreePacketCallback) != HAL_OK)
{
MSC_Handle->hbot.state = BOT_ERROR_IN;
@@ -251,7 +261,7 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
}
}
- else if(URB_Status == USBH_URB_STALL)
+ else if (URB_Status == USBH_URB_STALL)
{
/* This is Data IN Stage STALL Condition */
MSC_Handle->hbot.state = BOT_ERROR_IN;
@@ -266,10 +276,10 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
break;
case BOT_DATA_OUT:
- MSC_Handle->hbot.state = BOT_DATA_OUT_WAIT;
if (MSC_Handle->hbot.pbuf != NULL)
{
//Simple single-buffer operation
+ MSC_Handle->hbot.state = BOT_DATA_OUT_WAIT;
MSC_Handle->hbot.this_URB_size = MIN(MSC_Handle->hbot.cbw.field.DataTransferLength,
MSC_Handle->OutEpSize);
USBH_BulkSendData (phost,
@@ -281,6 +291,7 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
else
{
//Asynchronous multi-packet operation: get first packet
+ MSC_Handle->hbot.state = BOT_DATA_OUT_WAIT_RECEIVE_PACKET;
Callback_MSC_phost = phost;
if (Downstream_MSC_GetStreamDataPacket(USBH_MSC_BOT_Write_Multipacket_ReceivePacketCallback) != HAL_OK)
{
@@ -288,6 +299,9 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
}
}
break;
+
+ case BOT_DATA_OUT_WAIT_RECEIVE_PACKET:
+ break;
case BOT_DATA_OUT_WAIT:
URB_Status = USBH_LL_GetURBState(phost, MSC_Handle->OutPipe);
@@ -309,6 +323,7 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
if (MSC_Handle->hbot.cbw.field.DataTransferLength == 0)
{
//End of transmission
+ Downstream_ReleasePacket(MSC_Handle->hbot.bot_packet);
MSC_Handle->hbot.state = BOT_RECEIVE_CSW;
}
else
@@ -317,9 +332,11 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
if (MSC_Handle->hbot.bot_packet_bytes_remaining == 0)
{
//Get next bot_packet
+ Downstream_ReleasePacket(MSC_Handle->hbot.bot_packet);
+ MSC_Handle->hbot.state = BOT_DATA_OUT_WAIT_RECEIVE_PACKET;
if (Downstream_MSC_GetStreamDataPacket(USBH_MSC_BOT_Write_Multipacket_ReceivePacketCallback) != HAL_OK)
{
- MSC_Handle->hbot.state = BOT_ERROR_OUT;
+ MSC_Handle->hbot.state = BOT_ERROR_OUT;
}
}
else
@@ -333,13 +350,20 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
else if(URB_Status == USBH_URB_NOTREADY)
{
- /* Resend same data */
- MSC_Handle->hbot.state = BOT_DATA_OUT;
+ /* Resend same data */
+ if (MSC_Handle->hbot.pbuf != NULL)
+ {
+ MSC_Handle->hbot.state = BOT_DATA_OUT;
+ }
+ else
+ {
+ USBH_MSC_BOT_Write_Multipacket_PrepareURB(phost);
+ }
}
else if(URB_Status == USBH_URB_STALL)
{
- MSC_Handle->hbot.state = BOT_ERROR_OUT;
+ MSC_Handle->hbot.state = BOT_ERROR_OUT;
/* Refer to USB Mass-Storage Class : BOT (www.usb.org)
6.7.3 Ho - Host expects to send data to the device
@@ -437,12 +461,13 @@ void USBH_MSC_BOT_Read_Multipacket_FreePacketCallback(DownstreamPacketTypeDef* f
{
MSC_HandleTypeDef *MSC_Handle = (MSC_HandleTypeDef *) Callback_MSC_phost->pActiveClass->pData;
- if (MSC_Handle->hbot.state != BOT_DATA_IN_WAIT)
+ if (MSC_Handle->hbot.state != BOT_DATA_IN_WAIT_FREE_PACKET)
{
Downstream_PacketProcessor_FreakOut();
return;
}
+ MSC_Handle->hbot.state = BOT_DATA_IN_WAIT;
MSC_Handle->hbot.bot_packet = freePacket;
MSC_Handle->hbot.bot_packet_pbuf = freePacket->Data;
MSC_Handle->hbot.bot_packet_bytes_remaining = BOT_PAGE_LENGTH;
@@ -452,17 +477,19 @@ void USBH_MSC_BOT_Read_Multipacket_FreePacketCallback(DownstreamPacketTypeDef* f
void USBH_MSC_BOT_Read_Multipacket_PrepareURB(USBH_HandleTypeDef *phost)
{
+ uint32_t temp_URB_size;
MSC_HandleTypeDef *MSC_Handle = (MSC_HandleTypeDef *) phost->pActiveClass->pData;
- MSC_Handle->hbot.this_URB_size = MSC_Handle->hbot.cbw.field.DataTransferLength;
- if (MSC_Handle->hbot.this_URB_size > MSC_Handle->hbot.bot_packet_bytes_remaining)
+ temp_URB_size = MSC_Handle->hbot.cbw.field.DataTransferLength;
+ if (temp_URB_size > MSC_Handle->hbot.bot_packet_bytes_remaining)
{
- MSC_Handle->hbot.this_URB_size = MSC_Handle->hbot.bot_packet_bytes_remaining;
+ temp_URB_size = MSC_Handle->hbot.bot_packet_bytes_remaining;
}
- if (MSC_Handle->hbot.this_URB_size > MSC_Handle->InEpSize)
+ if (temp_URB_size > MSC_Handle->InEpSize)
{
- MSC_Handle->hbot.this_URB_size = MSC_Handle->InEpSize;
+ temp_URB_size = MSC_Handle->InEpSize;
}
+ MSC_Handle->hbot.this_URB_size = (uint16_t)temp_URB_size;
USBH_BulkReceiveData(phost,
MSC_Handle->hbot.bot_packet_pbuf,
@@ -476,12 +503,13 @@ void USBH_MSC_BOT_Write_Multipacket_ReceivePacketCallback(DownstreamPacketTypeDe
{
MSC_HandleTypeDef *MSC_Handle = (MSC_HandleTypeDef *) Callback_MSC_phost->pActiveClass->pData;
- if (MSC_Handle->hbot.state != BOT_DATA_OUT_WAIT)
+ if (MSC_Handle->hbot.state != BOT_DATA_OUT_WAIT_RECEIVE_PACKET)
{
Downstream_PacketProcessor_FreakOut();
return;
}
+ MSC_Handle->hbot.state = BOT_DATA_OUT_WAIT;
MSC_Handle->hbot.bot_packet = receivedPacket;
MSC_Handle->hbot.bot_packet_pbuf = receivedPacket->Data;
MSC_Handle->hbot.bot_packet_bytes_remaining = dataLength;
@@ -491,17 +519,20 @@ void USBH_MSC_BOT_Write_Multipacket_ReceivePacketCallback(DownstreamPacketTypeDe
void USBH_MSC_BOT_Write_Multipacket_PrepareURB(USBH_HandleTypeDef *phost)
{
+ uint32_t temp_URB_size;
MSC_HandleTypeDef *MSC_Handle = (MSC_HandleTypeDef *) phost->pActiveClass->pData;
- MSC_Handle->hbot.this_URB_size = MSC_Handle->hbot.cbw.field.DataTransferLength;
- if (MSC_Handle->hbot.this_URB_size > MSC_Handle->hbot.bot_packet_bytes_remaining)
+ temp_URB_size = MSC_Handle->hbot.cbw.field.DataTransferLength;
+ if (temp_URB_size > MSC_Handle->hbot.bot_packet_bytes_remaining)
{
- MSC_Handle->hbot.this_URB_size = MSC_Handle->hbot.bot_packet_bytes_remaining;
+ temp_URB_size = MSC_Handle->hbot.bot_packet_bytes_remaining;
}
- if (MSC_Handle->hbot.this_URB_size > MSC_Handle->OutEpSize)
+ if (temp_URB_size > MSC_Handle->OutEpSize)
{
- MSC_Handle->hbot.this_URB_size = MSC_Handle->OutEpSize;
+ temp_URB_size = MSC_Handle->OutEpSize;
}
+ MSC_Handle->hbot.this_URB_size = (uint16_t)temp_URB_size;
+
USBH_BulkSendData (phost,
MSC_Handle->hbot.bot_packet_pbuf,
MSC_Handle->hbot.this_URB_size,
diff --git a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_scsi.c b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_scsi.c
index ac7ed08..db0c9cc 100644
--- a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_scsi.c
+++ b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_scsi.c
@@ -387,9 +387,8 @@ USBH_StatusTypeDef USBH_MSC_SCSI_Read(USBH_HandleTypeDef *phost,
switch(MSC_Handle->hbot.cmd_state)
{
- case BOT_CMD_SEND:
-
- /*Prepare the CBW and relevent field*/
+ case BOT_CMD_SEND:
+ /*Prepare the CBW and relevant fields*/
MSC_Handle->hbot.cbw.field.DataTransferLength = length * MSC_Handle->unit[lun].capacity.block_size;;
MSC_Handle->hbot.cbw.field.Flags = USB_EP_DIR_IN;
MSC_Handle->hbot.cbw.field.CBLength = CBW_LENGTH;
diff --git a/Downstream/Src/downstream_msc.c b/Downstream/Src/downstream_msc.c
index a73671d..c982a91 100644
--- a/Downstream/Src/downstream_msc.c
+++ b/Downstream/Src/downstream_msc.c
@@ -28,7 +28,7 @@ void Downstream_MSC_PacketProcessor_GetCapacity(DownstreamPacketTypeDef* receive
void Downstream_MSC_PacketProcessor_BeginRead(DownstreamPacketTypeDef* receivedPacket);
void Downstream_MSC_PacketProcessor_BeginWrite(DownstreamPacketTypeDef* receivedPacket);
void Downstream_MSC_PacketProcessor_RdWrCompleteCallback(USBH_StatusTypeDef result);
-void Downstream_MSC_GetStreamDataPacketCallback(DownstreamPacketTypeDef* replyPacket);
+void Downstream_MSC_GetStreamDataPacketCallback(DownstreamPacketTypeDef* receivedPacket);
//High-level checks on the connected device. We don't want some weirdly
@@ -69,11 +69,11 @@ void Downstream_MSC_PacketProcessor(DownstreamPacketTypeDef* receivedPacket)
Downstream_MSC_PacketProcessor_GetCapacity(receivedPacket);
break;
- case COMMAND_MSC_BEGIN_READ:
+ case COMMAND_MSC_READ:
Downstream_MSC_PacketProcessor_BeginRead(receivedPacket);
break;
- case COMMAND_MSC_BEGIN_WRITE:
+ case COMMAND_MSC_WRITE:
Downstream_MSC_PacketProcessor_BeginWrite(receivedPacket);
break;
@@ -94,7 +94,7 @@ void Downstream_MSC_PacketProcessor_TestUnitReady(DownstreamPacketTypeDef* recei
{
receivedPacket->Data[0] = HAL_ERROR;
}
- receivedPacket->Length = DOWNSTREAM_PACKET_HEADER_LEN + 1;
+ receivedPacket->Length16 = DOWNSTREAM_PACKET_HEADER_LEN_16 + 1;
Downstream_PacketProcessor_ClassReply(receivedPacket);
}
@@ -103,7 +103,7 @@ void Downstream_MSC_PacketProcessor_GetCapacity(DownstreamPacketTypeDef* receive
{
MSC_HandleTypeDef* MSC_Handle = (MSC_HandleTypeDef*)hUsbHostFS.pActiveClass->pData;
- receivedPacket->Length = DOWNSTREAM_PACKET_HEADER_LEN + 8;
+ receivedPacket->Length16 = DOWNSTREAM_PACKET_HEADER_LEN_16 + (8 / 2);
*(uint32_t*)&(receivedPacket->Data[0]) = MSC_Handle->unit[MSC_FIXED_LUN].capacity.block_nbr;
*(uint32_t*)&(receivedPacket->Data[4]) = (uint32_t)MSC_Handle->unit[MSC_FIXED_LUN].capacity.block_size;
Downstream_PacketProcessor_ClassReply(receivedPacket);
@@ -118,7 +118,7 @@ void Downstream_MSC_PacketProcessor_BeginRead(DownstreamPacketTypeDef* receivedP
uint64_t readByteCount;
MSC_HandleTypeDef* MSC_Handle = (MSC_HandleTypeDef*)hUsbHostFS.pActiveClass->pData;
- if (receivedPacket->Length != (DOWNSTREAM_PACKET_HEADER_LEN + (4 * 3)))
+ if (receivedPacket->Length16 != (DOWNSTREAM_PACKET_HEADER_LEN_16 + ((4 * 3) / 2)))
{
Downstream_PacketProcessor_FreakOut();
return;
@@ -136,7 +136,7 @@ void Downstream_MSC_PacketProcessor_BeginRead(DownstreamPacketTypeDef* receivedP
}
receivedPacket->Data[0] = HAL_ERROR;
- receivedPacket->Length = DOWNSTREAM_PACKET_HEADER_LEN + 1;
+ receivedPacket->Length16 = DOWNSTREAM_PACKET_HEADER_LEN_16 + 1;
if (USBH_MSC_UnitIsReady(&hUsbHostFS, MSC_FIXED_LUN))
{
if (USBH_MSC_Read(&hUsbHostFS,
@@ -171,7 +171,7 @@ void Downstream_MSC_PacketProcessor_BeginWrite(DownstreamPacketTypeDef* received
uint64_t writeByteCount;
MSC_HandleTypeDef* MSC_Handle = (MSC_HandleTypeDef*)hUsbHostFS.pActiveClass->pData;
- if (receivedPacket->Length != (DOWNSTREAM_PACKET_HEADER_LEN + (4 * 3)))
+ if (receivedPacket->Length16 != (DOWNSTREAM_PACKET_HEADER_LEN_16 + ((4 * 3) / 2)))
{
Downstream_PacketProcessor_FreakOut();
return;
@@ -193,7 +193,7 @@ void Downstream_MSC_PacketProcessor_BeginWrite(DownstreamPacketTypeDef* received
ByteCount = (uint32_t)writeByteCount;
receivedPacket->Data[0] = HAL_ERROR;
- receivedPacket->Length = DOWNSTREAM_PACKET_HEADER_LEN + 1;
+ receivedPacket->Length16 = DOWNSTREAM_PACKET_HEADER_LEN_16 + 1;
//Our host stack has no way to detect if write-protection is enabled.
//So currently we can't return HAL_BUSY to Upstream in this situation.
@@ -214,11 +214,16 @@ void Downstream_MSC_PacketProcessor_BeginWrite(DownstreamPacketTypeDef* received
//Used by USB MSC host driver
HAL_StatusTypeDef Downstream_MSC_PutStreamDataPacket(DownstreamPacketTypeDef* packetToSend,
- uint32_t dataLength)
+ uint32_t dataLength8)
{
- packetToSend->Length = dataLength + DOWNSTREAM_PACKET_HEADER_LEN;
+ if ((dataLength8 % 2) != 0)
+ {
+ return HAL_ERROR;
+ }
+
+ packetToSend->Length16 = (dataLength8 / 2) + DOWNSTREAM_PACKET_HEADER_LEN_16;
packetToSend->CommandClass = COMMAND_CLASS_MASS_STORAGE | COMMAND_CLASS_DATA_FLAG;
- packetToSend->Command = COMMAND_MSC_BEGIN_WRITE;
+ packetToSend->Command = COMMAND_MSC_READ;
return Downstream_TransmitPacket(packetToSend);
}
@@ -244,28 +249,30 @@ HAL_StatusTypeDef Downstream_MSC_GetStreamDataPacket(DownstreamMSCCallbackPacket
}
-void Downstream_MSC_GetStreamDataPacketCallback(DownstreamPacketTypeDef* replyPacket)
+void Downstream_MSC_GetStreamDataPacketCallback(DownstreamPacketTypeDef* receivedPacket)
{
- uint16_t dataLength;
+ uint16_t dataLength8;
ReadStreamBusy = 0;
if (GetStreamDataCallback == NULL)
{
- ReadStreamPacket = replyPacket; //We used up our callback already, so save this one for later.
+ ReadStreamPacket = receivedPacket; //We used up our callback already, so save this one for later.
return;
}
- if (((replyPacket->CommandClass & COMMAND_CLASS_DATA_FLAG) == 0) || //Any incoming 'command' (as opposed to incoming 'data') is an automatic fail here
- (replyPacket->Length <= DOWNSTREAM_PACKET_HEADER_LEN) || //Should be at least one data byte in the packet.
- (replyPacket->Length > ByteCount))
+ dataLength8 = (receivedPacket->Length16 - DOWNSTREAM_PACKET_HEADER_LEN_16) * 2;
+
+ if ((receivedPacket->CommandClass != (COMMAND_CLASS_MASS_STORAGE | COMMAND_CLASS_DATA_FLAG)) || //Must be MSC command with data flag set
+ (receivedPacket->Command != COMMAND_MSC_WRITE) || //Must be write command
+ (receivedPacket->Length16 <= DOWNSTREAM_PACKET_HEADER_LEN_16) || //Should be at least one data byte in the packet.
+ (dataLength8 > ByteCount))
{
Downstream_PacketProcessor_FreakOut();
return;
}
- dataLength = replyPacket->Length - DOWNSTREAM_PACKET_HEADER_LEN;
- ByteCount -= dataLength;
- GetStreamDataCallback(replyPacket, dataLength); //usb_msc_scsi will use this packet, so don't release now
+ ByteCount -= dataLength8;
+ GetStreamDataCallback(receivedPacket, dataLength8); //usb_msc_scsi will use this packet, so don't release now
if (ByteCount > 0)
{
Downstream_MSC_GetStreamDataPacket(NULL); //Try to get the next packet now, before USB asks for it
@@ -273,3 +280,4 @@ void Downstream_MSC_GetStreamDataPacketCallback(DownstreamPacketTypeDef* replyPa
}
+
diff --git a/Downstream/Src/downstream_spi.c b/Downstream/Src/downstream_spi.c
index c330b3c..51e4d28 100644
--- a/Downstream/Src/downstream_spi.c
+++ b/Downstream/Src/downstream_spi.c
@@ -23,6 +23,8 @@ InterfaceStateTypeDef DownstreamInterfaceState = DOWNSTREAM_INTERFACE_IDLE;
FreePacketCallbackTypeDef PendingFreePacketCallback = NULL; //Indicates someone is waiting for a packet buffer to become available
SpiPacketReceivedCallbackTypeDef ReceivePacketCallback = NULL; //Indicates someone is waiting for a received packet
+uint32_t TemporaryIncomingPacketLength = 0;
+uint8_t SpiInterruptCompleted = 0;
HAL_StatusTypeDef Downstream_CheckPreparePacketReception(void);
@@ -38,7 +40,7 @@ void Downstream_InitSPI(void)
Hspi1.Instance = SPI1;
Hspi1.Init.Mode = SPI_MODE_SLAVE;
Hspi1.Init.Direction = SPI_DIRECTION_2LINES;
- Hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
+ Hspi1.Init.DataSize = SPI_DATASIZE_16BIT;
Hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
Hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
Hspi1.Init.NSS = SPI_NSS_HARD_INPUT;
@@ -116,7 +118,6 @@ void Downstream_ReleasePacket(DownstreamPacketTypeDef* packetToRelease)
}
-
//Used by Downstream state machine and USB classes.
//Ok to call when idle or transmitting.
//Not OK to call when receiving or awaiting reception.
@@ -171,11 +172,11 @@ void Downstream_PrepareReceivePacketSize(DownstreamPacketTypeDef* freePacket)
return;
}
CurrentWorkingPacket = freePacket;
- //CurrentWorkingPacket->Length = 0;
- //if (HAL_SPI_TransmitReceive_DMA(... ????
- if (HAL_SPI_Receive_DMA(&Hspi1,
- (uint8_t*)&CurrentWorkingPacket->Length,
- (2 + 1)) != HAL_OK) //"When the CRC feature is enabled the pData Length must be Size + 1"
+ CurrentWorkingPacket->Length16 = 0;
+ if (HAL_SPI_TransmitReceive_IT(&Hspi1,
+ (uint8_t*)&CurrentWorkingPacket->Length16,
+ (uint8_t*)&CurrentWorkingPacket->Length16,
+ 2) != HAL_OK) //We only need to read one word, but the peripheral library freaks out...
{
DOWNSTREAM_SPI_FREAKOUT;
return;
@@ -185,63 +186,8 @@ void Downstream_PrepareReceivePacketSize(DownstreamPacketTypeDef* freePacket)
}
-//Called at the end of the SPI RX DMA transfer,
-//at DMA2 interrupt priority. Assume *hspi points to our hspi1.
-void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)
-{
- SpiPacketReceivedCallbackTypeDef tempPacketCallback;
-
- UPSTREAM_TX_REQUEST_DEASSERT;
-
- if (DownstreamInterfaceState >= DOWNSTREAM_INTERFACE_ERROR)
- {
- return;
- }
-
- if (DownstreamInterfaceState == DOWNSTREAM_INTERFACE_RX_SIZE_WAIT)
- {
- if ((CurrentWorkingPacket->Length < DOWNSTREAM_PACKET_LEN_MIN) ||
- (CurrentWorkingPacket->Length > DOWNSTREAM_PACKET_LEN))
- {
- DOWNSTREAM_SPI_FREAKOUT;
- return;
- }
- DownstreamInterfaceState = DOWNSTREAM_INTERFACE_RX_PACKET_WAIT;
- if ((HAL_SPI_Receive_DMA(&Hspi1,
- &CurrentWorkingPacket->CommandClass,
- CurrentWorkingPacket->Length + 1)) != HAL_OK) //"When the CRC feature is enabled the pData Length must be Size + 1"
- {
- DOWNSTREAM_SPI_FREAKOUT;
- return;
- }
- UPSTREAM_TX_REQUEST_ASSERT;
- return;
- }
- if (DownstreamInterfaceState == DOWNSTREAM_INTERFACE_RX_PACKET_WAIT)
- {
- DownstreamInterfaceState = DOWNSTREAM_INTERFACE_IDLE;
- if (ReceivePacketCallback == NULL)
- {
- DOWNSTREAM_SPI_FREAKOUT;
- return;
- }
- //Packet processor may want to receive another packet immediately,
- //so clear ReceivePacketCallback before the call.
- //It is the callback's responsibility to release the packet buffer we are passing to it!
- tempPacketCallback = ReceivePacketCallback;
- ReceivePacketCallback = NULL;
- tempPacketCallback(CurrentWorkingPacket);
- return;
- }
-
- //case default:
- DOWNSTREAM_SPI_FREAKOUT;
-}
-
-
-
-//Used by Downstream state machine (and USB classes?).
+//Used by Downstream state machine and USB classes.
//Call when idle or transmitting.
//It doesn't make sense to call when receiving or awaiting reception.
HAL_StatusTypeDef Downstream_TransmitPacket(DownstreamPacketTypeDef* packetToWrite)
@@ -259,8 +205,8 @@ HAL_StatusTypeDef Downstream_TransmitPacket(DownstreamPacketTypeDef* packetToWri
return HAL_ERROR;
}
if ((packetToWrite->Busy != BUSY) ||
- (packetToWrite->Length < DOWNSTREAM_PACKET_LEN_MIN) ||
- (packetToWrite->Length > DOWNSTREAM_PACKET_LEN))
+ (packetToWrite->Length16 < DOWNSTREAM_PACKET_LEN_MIN_16) ||
+ (packetToWrite->Length16 > DOWNSTREAM_PACKET_LEN_16))
{
DOWNSTREAM_SPI_FREAKOUT;
return HAL_ERROR;
@@ -281,10 +227,11 @@ HAL_StatusTypeDef Downstream_TransmitPacket(DownstreamPacketTypeDef* packetToWri
case DOWNSTREAM_INTERFACE_IDLE:
DownstreamInterfaceState = DOWNSTREAM_INTERFACE_TX_SIZE_WAIT;
CurrentWorkingPacket = packetToWrite;
- if (HAL_SPI_TransmitReceive_DMA(&Hspi1,
- (uint8_t*)&CurrentWorkingPacket->Length,
- (uint8_t*)&CurrentWorkingPacket->Length,
- 2 + 1) != HAL_OK) //"When the CRC feature is enabled the pRxData Length must be Size + 1"
+
+ if (HAL_SPI_TransmitReceive_IT(&Hspi1,
+ (uint8_t*)&CurrentWorkingPacket->Length16,
+ (uint8_t*)&TemporaryIncomingPacketLength,
+ 2) != HAL_OK) //We only need to write one word, but the peripheral library freaks out...
{
DOWNSTREAM_SPI_FREAKOUT;
return HAL_ERROR;
@@ -301,74 +248,94 @@ HAL_StatusTypeDef Downstream_TransmitPacket(DownstreamPacketTypeDef* packetToWri
}
-//Called at the end of the SPI TxRx DMA transfer,
-//at DMA2 interrupt priority. Assume *hspi points to our hspi1.
-//We use TxRx to send our reply packet to check if Upstream was trying
-//to send us a packet at the same time.
-void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
+
+//Do stuff at main loop priority after SPI transaction is complete
+void Downstream_SPIProcess(void)
{
- UPSTREAM_TX_REQUEST_DEASSERT;
+ SpiPacketReceivedCallbackTypeDef tempPacketCallback;
- if (DownstreamInterfaceState >= DOWNSTREAM_INTERFACE_ERROR)
+ if (SpiInterruptCompleted == 0)
{
return;
}
- if (DownstreamInterfaceState != DOWNSTREAM_INTERFACE_TX_SIZE_WAIT)
- {
- DOWNSTREAM_SPI_FREAKOUT;
- return;
- }
+ SpiInterruptCompleted = 0;
+ UPSTREAM_TX_REQUEST_DEASSERT;
- if (CurrentWorkingPacket->Length != 0)
+ if (DownstreamInterfaceState >= DOWNSTREAM_INTERFACE_ERROR)
{
- //Currently we just freak out if Upstream sends us an unexpected command.
- //Theoretically we could reset our downstream state machine and accept the new command...
- DOWNSTREAM_SPI_FREAKOUT;
return;
}
- DownstreamInterfaceState = DOWNSTREAM_INTERFACE_TX_PACKET_WAIT;
- if ((HAL_SPI_Transmit_DMA(&Hspi1,
- &CurrentWorkingPacket->CommandClass,
- CurrentWorkingPacket->Length)) != HAL_OK)
+ //Finished transmitting packet size
+ if (DownstreamInterfaceState == DOWNSTREAM_INTERFACE_TX_SIZE_WAIT)
{
- DOWNSTREAM_SPI_FREAKOUT;
- return;
- }
- UPSTREAM_TX_REQUEST_ASSERT;
-}
-
-
-//Called at the end of the SPI TX DMA transfer,
-//at DMA2 interrupt priority. Assume *hspi points to our hspi1.
-void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
-{
- UPSTREAM_TX_REQUEST_DEASSERT;
+ if (TemporaryIncomingPacketLength != 0)
+ {
+ //Currently we just freak out if Upstream sends us an unexpected command.
+ //Theoretically we could reset our downstream state machine and accept the new command...
+ DOWNSTREAM_SPI_FREAKOUT;
+ return;
+ }
- if (DownstreamInterfaceState >= DOWNSTREAM_INTERFACE_ERROR)
- {
+ DownstreamInterfaceState = DOWNSTREAM_INTERFACE_TX_PACKET_WAIT;
+ if (HAL_SPI_TransmitReceive_IT(&Hspi1,
+ &CurrentWorkingPacket->CommandClass,
+ &CurrentWorkingPacket->CommandClass,
+ ((CurrentWorkingPacket->Length16 < 2) ? 2 : CurrentWorkingPacket->Length16)) != HAL_OK)
+ {
+ DOWNSTREAM_SPI_FREAKOUT;
+ return;
+ }
+ UPSTREAM_TX_REQUEST_ASSERT;
return;
}
- if (DownstreamInterfaceState != DOWNSTREAM_INTERFACE_TX_PACKET_WAIT)
+ //Finished transmitting packet body
+ if (DownstreamInterfaceState == DOWNSTREAM_INTERFACE_TX_PACKET_WAIT)
{
- DOWNSTREAM_SPI_FREAKOUT;
+ Downstream_ReleasePacket(CurrentWorkingPacket);
+ if (NextTxPacket != NULL)
+ {
+ //NextTxPacket has already passed the checks in Downstream_TransmitPacket.
+ //So we just need to pass it to HAL_SPI_Transmit_DMA.
+ DownstreamInterfaceState = DOWNSTREAM_INTERFACE_TX_SIZE_WAIT;
+ CurrentWorkingPacket = NextTxPacket;
+ NextTxPacket = NULL;
+ if (HAL_SPI_TransmitReceive_IT(&Hspi1,
+ (uint8_t*)&CurrentWorkingPacket->Length16,
+ (uint8_t*)&TemporaryIncomingPacketLength,
+ 2) != HAL_OK) //We only need to write one word, but the peripheral library freaks out...
+ {
+ DOWNSTREAM_SPI_FREAKOUT;
+ return;
+ }
+ UPSTREAM_TX_REQUEST_ASSERT;
+ return;
+ }
+
+ DownstreamInterfaceState = DOWNSTREAM_INTERFACE_IDLE;
+ if (ReceivePacketCallback != NULL)
+ {
+ Downstream_CheckPreparePacketReception();
+ }
return;
}
- Downstream_ReleasePacket(CurrentWorkingPacket);
- if (NextTxPacket != NULL)
+
+ if (DownstreamInterfaceState == DOWNSTREAM_INTERFACE_RX_SIZE_WAIT)
{
- //NextTxPacket has already passed the checks in Downstream_TransmitPacket.
- //So we just need to pass it to HAL_SPI_Transmit_DMA.
- DownstreamInterfaceState = DOWNSTREAM_INTERFACE_TX_SIZE_WAIT;
- CurrentWorkingPacket = NextTxPacket;
- NextTxPacket = NULL;
- if (HAL_SPI_TransmitReceive_DMA(&Hspi1,
- (uint8_t*)&CurrentWorkingPacket->Length,
- (uint8_t*)&CurrentWorkingPacket->Length,
- 2 + 1) != HAL_OK) //"When the CRC feature is enabled the pRxData Length must be Size + 1"
+ if ((CurrentWorkingPacket->Length16 < DOWNSTREAM_PACKET_LEN_MIN_16) ||
+ (CurrentWorkingPacket->Length16 > DOWNSTREAM_PACKET_LEN_16))
+ {
+ DOWNSTREAM_SPI_FREAKOUT;
+ return;
+ }
+ DownstreamInterfaceState = DOWNSTREAM_INTERFACE_RX_PACKET_WAIT;
+ if (HAL_SPI_TransmitReceive_IT(&Hspi1,
+ &CurrentWorkingPacket->CommandClass,
+ &CurrentWorkingPacket->CommandClass,
+ ((CurrentWorkingPacket->Length16 < 2) ? 2 : CurrentWorkingPacket->Length16)) != HAL_OK)
{
DOWNSTREAM_SPI_FREAKOUT;
return;
@@ -377,11 +344,39 @@ void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
return;
}
- DownstreamInterfaceState = DOWNSTREAM_INTERFACE_IDLE;
- if (ReceivePacketCallback != NULL)
+ if (DownstreamInterfaceState == DOWNSTREAM_INTERFACE_RX_PACKET_WAIT)
{
- Downstream_CheckPreparePacketReception();
+ DownstreamInterfaceState = DOWNSTREAM_INTERFACE_IDLE;
+ if (ReceivePacketCallback == NULL)
+ {
+ DOWNSTREAM_SPI_FREAKOUT;
+ return;
+ }
+ //Packet processor may want to receive another packet immediately,
+ //so clear ReceivePacketCallback before the call.
+ //It is the callback's responsibility to release the packet buffer we are passing to it!
+ tempPacketCallback = ReceivePacketCallback;
+ ReceivePacketCallback = NULL;
+ tempPacketCallback(CurrentWorkingPacket);
+ return;
}
+
+
+ //case default:
+ DOWNSTREAM_SPI_FREAKOUT;
+}
+
+
+
+//Called at the end of the SPI TxRx DMA transfer,
+//at DMA2 interrupt priority. Assume *hspi points to our hspi1.
+//We use TxRx to send our reply packet to check if Upstream was trying
+//to send us a packet at the same time.
+//We also TxRx our packet body because the SPI silicon is buggy at the end of
+//a transmit-only DMA transfer with CRC! (it does not clear RXNE flag on request)
+void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
+{
+ SpiInterruptCompleted = 1;
}
diff --git a/Downstream/Src/downstream_statemachine.c b/Downstream/Src/downstream_statemachine.c
index ab2f1e0..0fe3070 100644
--- a/Downstream/Src/downstream_statemachine.c
+++ b/Downstream/Src/downstream_statemachine.c
@@ -13,7 +13,6 @@
#include "usbh_core.h"
#include "usbh_msc.h"
#include "led.h"
-#include "interrupts.h"
@@ -58,7 +57,7 @@ void Downstream_PacketProcessor(DownstreamPacketTypeDef* receivedPacket)
//we need to tell Upstream of the fact (and not freak out).
if (DownstreamState == STATE_DEVICE_NOT_READY)
{
- receivedPacket->Length = DOWNSTREAM_PACKET_HEADER_LEN;
+ receivedPacket->Length16 = DOWNSTREAM_PACKET_HEADER_LEN_16;
receivedPacket->CommandClass = COMMAND_CLASS_ERROR;
receivedPacket->Command = COMMAND_ERROR_DEVICE_DISCONNECTED;
Downstream_PacketProcessor_ClassReply(receivedPacket);
@@ -135,7 +134,7 @@ void Downstream_PacketProcessor_Interface(DownstreamPacketTypeDef* receivedPacke
void Downstream_PacketProcessor_Interface_ReplyNotifyDevice(DownstreamPacketTypeDef* replyPacket)
{
- replyPacket->Length = DOWNSTREAM_PACKET_HEADER_LEN + 1;
+ replyPacket->Length16 = DOWNSTREAM_PACKET_HEADER_LEN_16 + 1;
replyPacket->CommandClass = COMMAND_CLASS_INTERFACE;
replyPacket->Command = COMMAND_INTERFACE_NOTIFY_DEVICE;
replyPacket->Data[0] = ConfiguredDeviceClass;
@@ -150,7 +149,7 @@ void Downstream_PacketProcessor_Interface_ReplyNotifyDevice(DownstreamPacketType
void Downstream_PacketProcessor_GenericErrorReply(DownstreamPacketTypeDef* replyPacket)
{
- replyPacket->Length = DOWNSTREAM_PACKET_HEADER_LEN;
+ replyPacket->Length16 = DOWNSTREAM_PACKET_HEADER_LEN_16;
replyPacket->CommandClass = COMMAND_CLASS_ERROR;
replyPacket->Command = COMMAND_ERROR_GENERIC;
@@ -168,7 +167,6 @@ void Downstream_PacketProcessor_ClassReply(DownstreamPacketTypeDef* replyPacket)
//This callback receives various event ids from the host stack,
//either at INT_PRIORITY_OTG_FS or from main().
-//We should therefore elevate our execution priority to INT_PRIORITY_OTG_FS where necessary.
void Downstream_HostUserCallback(USBH_HandleTypeDef *phost, uint8_t id)
{
InterfaceCommandClassTypeDef newActiveClass = COMMAND_CLASS_INTERFACE;
@@ -178,20 +176,18 @@ void Downstream_HostUserCallback(USBH_HandleTypeDef *phost, uint8_t id)
return;
}
- //Called from USB interrupt
+ //Called from USB interrupt.
+ //Simple function shouldn't need to worry about preempting anything important.
if (id == HOST_USER_DISCONNECTION)
{
DownstreamState = STATE_DEVICE_NOT_READY;
return;
}
- __set_BASEPRI(INT_PRIORITY_OTG_FS); //Elevate our priority level so we aren't interrupted
-
//Called from main()
if (id == HOST_USER_UNRECOVERED_ERROR)
{
DOWNSTREAM_STATEMACHINE_FREAKOUT;
- __set_BASEPRI(0);
return;
}
@@ -214,7 +210,6 @@ void Downstream_HostUserCallback(USBH_HandleTypeDef *phost, uint8_t id)
default:
LED_Fault_SetBlinkRate(LED_SLOW_BLINK_RATE);
DownstreamState = STATE_ERROR;
- __set_BASEPRI(0);
return;
}
@@ -223,7 +218,6 @@ void Downstream_HostUserCallback(USBH_HandleTypeDef *phost, uint8_t id)
if (newActiveClass == COMMAND_CLASS_INTERFACE)
{
DOWNSTREAM_STATEMACHINE_FREAKOUT;
- __set_BASEPRI(0);
return;
}
@@ -233,7 +227,6 @@ void Downstream_HostUserCallback(USBH_HandleTypeDef *phost, uint8_t id)
(ConfiguredDeviceClass != newActiveClass))
{
DOWNSTREAM_STATEMACHINE_FREAKOUT;
- __set_BASEPRI(0);
return;
}
ConfiguredDeviceClass = newActiveClass;
@@ -241,19 +234,16 @@ void Downstream_HostUserCallback(USBH_HandleTypeDef *phost, uint8_t id)
if (DownstreamState == STATE_WAIT_DEVICE_READY)
{
Downstream_GetFreePacket(Downstream_PacketProcessor_Interface_ReplyNotifyDevice);
- __set_BASEPRI(0);
return;
}
if (DownstreamState == STATE_DEVICE_NOT_READY)
{
DownstreamState = STATE_DEVICE_READY;
- __set_BASEPRI(0);
return;
}
DOWNSTREAM_STATEMACHINE_FREAKOUT;
- __set_BASEPRI(0);
return;
}
}
diff --git a/Downstream/Src/hal_msp.c b/Downstream/Src/hal_msp.c
index b2db449..5d16165 100644
--- a/Downstream/Src/hal_msp.c
+++ b/Downstream/Src/hal_msp.c
@@ -56,7 +56,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
if(hspi->Instance==SPI1)
{
__SPI1_CLK_ENABLE();
- __DMA2_CLK_ENABLE();
+// __DMA2_CLK_ENABLE();
/**SPI1 GPIO Configuration
PA4 ------> SPI_NSS
@@ -64,50 +64,59 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
PA6 ------> SPI1_MISO
PA7 ------> SPI1_MOSI
*/
- GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
+ GPIO_InitStruct.Pin = GPIO_PIN_4; //NSS is active low so pull up
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_MEDIUM;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+ GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; //SCK & data are active high so pull down
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
UPSTREAM_TX_REQUEST_DEASSERT;
GPIO_InitStruct.Pin = UPSTREAM_TX_REQUEST_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(UPSTREAM_TX_REQUEST_PORT, &GPIO_InitStruct);
- /* Peripheral DMA init*/
- hdma_spi1_rx.Instance = DMA2_Stream2;
- hdma_spi1_rx.Init.Channel = DMA_CHANNEL_3;
- hdma_spi1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
- hdma_spi1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_spi1_rx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
- hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
- hdma_spi1_rx.Init.Mode = DMA_NORMAL;
- hdma_spi1_rx.Init.Priority = DMA_PRIORITY_MEDIUM;
- hdma_spi1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- HAL_DMA_Init(&hdma_spi1_rx);
- __HAL_LINKDMA(hspi,hdmarx,hdma_spi1_rx);
-
- hdma_spi1_tx.Instance = DMA2_Stream3;
- hdma_spi1_tx.Init.Channel = DMA_CHANNEL_3;
- hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
- hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
- hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
- hdma_spi1_tx.Init.Mode = DMA_NORMAL;
- hdma_spi1_tx.Init.Priority = DMA_PRIORITY_MEDIUM;
- hdma_spi1_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- HAL_DMA_Init(&hdma_spi1_tx);
- __HAL_LINKDMA(hspi,hdmatx,hdma_spi1_tx);
-
- /* DMA interrupt init */
- HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, INT_PRIORITY_SPI_DMA, 0);
- HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
- HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, INT_PRIORITY_SPI_DMA, 0);
- HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn);
+ //Interrupt-based SPI now!
+ HAL_NVIC_SetPriority(SPI1_IRQn, INT_PRIORITY_SPI, 0);
+ HAL_NVIC_EnableIRQ(SPI1_IRQn);
+
+// /* Peripheral DMA init*/
+// hdma_spi1_rx.Instance = DMA2_Stream2;
+// hdma_spi1_rx.Init.Channel = DMA_CHANNEL_3;
+// hdma_spi1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
+// hdma_spi1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
+// hdma_spi1_rx.Init.MemInc = DMA_MINC_ENABLE;
+// hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+// hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+// hdma_spi1_rx.Init.Mode = DMA_NORMAL;
+// hdma_spi1_rx.Init.Priority = DMA_PRIORITY_MEDIUM;
+// hdma_spi1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+// HAL_DMA_Init(&hdma_spi1_rx);
+// __HAL_LINKDMA(hspi,hdmarx,hdma_spi1_rx);
+//
+// hdma_spi1_tx.Instance = DMA2_Stream3;
+// hdma_spi1_tx.Init.Channel = DMA_CHANNEL_3;
+// hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
+// hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
+// hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE;
+// hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+// hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+// hdma_spi1_tx.Init.Mode = DMA_NORMAL;
+// hdma_spi1_tx.Init.Priority = DMA_PRIORITY_MEDIUM;
+// hdma_spi1_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+// HAL_DMA_Init(&hdma_spi1_tx);
+// __HAL_LINKDMA(hspi,hdmatx,hdma_spi1_tx);
+//
+// /* DMA interrupt init */
+// HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, INT_PRIORITY_SPI_DMA, 0);
+// HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+// HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, INT_PRIORITY_SPI_DMA, 0);
+// HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn);
}
}
@@ -127,8 +136,8 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
/* Peripheral DMA DeInit*/
- HAL_DMA_DeInit(hspi->hdmarx);
- HAL_DMA_DeInit(hspi->hdmatx);
+// HAL_DMA_DeInit(hspi->hdmarx);
+// HAL_DMA_DeInit(hspi->hdmatx);
}
}
diff --git a/Downstream/Src/interrupts.c b/Downstream/Src/interrupts.c
index dc3a99d..6de5e35 100644
--- a/Downstream/Src/interrupts.c
+++ b/Downstream/Src/interrupts.c
@@ -35,12 +35,15 @@
#include "stm32f4xx.h"
#include "interrupts.h"
#include "led.h"
+#include "board_config.h"
/* External variables --------------------------------------------------------*/
extern HCD_HandleTypeDef hhcd_USB_OTG_FS;
-extern DMA_HandleTypeDef hdma_spi1_rx;
-extern DMA_HandleTypeDef hdma_spi1_tx;
+extern SPI_HandleTypeDef Hspi1;
+
+//extern DMA_HandleTypeDef hdma_spi1_rx;
+//extern DMA_HandleTypeDef hdma_spi1_tx;
/******************************************************************************/
/* Cortex-M4 Processor Interruption and Exception Handlers */
@@ -62,22 +65,31 @@ void SysTick_Handler(void)
/* please refer to the startup file (startup_stm32f4xx.s). */
/******************************************************************************/
-/**
-* @brief This function handles DMA2 Stream2 global interrupt.
-*/
-void DMA2_Stream2_IRQHandler(void)
-{
- HAL_DMA_IRQHandler(&hdma_spi1_rx);
-}
+///**
+//* @brief This function handles DMA2 Stream2 global interrupt.
+//*/
+//void DMA2_Stream2_IRQHandler(void)
+//{
+// HAL_DMA_IRQHandler(&hdma_spi1_rx);
+//}
+//
+///**
+//* @brief This function handles DMA2 Stream3 global interrupt.
+//*/
+//void DMA2_Stream3_IRQHandler(void)
+//{
+// HAL_DMA_IRQHandler(&hdma_spi1_tx);
+//}
-/**
-* @brief This function handles DMA2 Stream3 global interrupt.
-*/
-void DMA2_Stream3_IRQHandler(void)
+
+void SPI1_IRQHandler(void)
{
- HAL_DMA_IRQHandler(&hdma_spi1_tx);
+ SPI_INT_ACTIVE_ON;
+ HAL_SPI_IRQHandler(&Hspi1);
+ SPI_INT_ACTIVE_OFF;
}
+
/**
* @brief This function handles USB On The Go FS global interrupt.
*/
diff --git a/Downstream/Src/main.c b/Downstream/Src/main.c
index 57d8e8d..b97587e 100644
--- a/Downstream/Src/main.c
+++ b/Downstream/Src/main.c
@@ -35,10 +35,10 @@
#include "usb_host.h"
#include "board_config.h"
#include "downstream_statemachine.h"
+#include "downstream_spi.h"
#include "led.h"
-
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void GPIO_Init(void);
@@ -63,7 +63,7 @@ int main(void)
while (1)
{
USB_Host_Process();
-
+ Downstream_SPIProcess();
}
}
@@ -158,6 +158,11 @@ void GPIO_Init(void)
STAT_LED_OFF;
GPIO_InitStruct.Pin = STAT_LED_PIN;
HAL_GPIO_Init(STAT_LED_PORT, &GPIO_InitStruct);
+
+ //SPI_INT_ACTIVE indicator
+ GPIO_InitStruct.Pin = SPI_INT_ACTIVE_PIN;
+ HAL_GPIO_Init(SPI_INT_ACTIVE_PORT, &GPIO_InitStruct);
+ SPI_INT_ACTIVE_OFF;
}
diff --git a/Downstream/Src/usb_host.c b/Downstream/Src/usb_host.c
index e3ef322..6e5573f 100644
--- a/Downstream/Src/usb_host.c
+++ b/Downstream/Src/usb_host.c
@@ -42,7 +42,6 @@
USBH_HandleTypeDef hUsbHostFS;
-
/* init function */
void USB_Host_Init(void)
{
@@ -60,7 +59,8 @@ void USB_Host_Init(void)
void USB_Host_Process()
{
/* USB Host Background task */
- USBH_Process(&hUsbHostFS);
+ USBH_Process(&hUsbHostFS);
+
}
diff --git a/Upstream/.cproject b/Upstream/.cproject
index 0983f0b..09f2839 100755
--- a/Upstream/.cproject
+++ b/Upstream/.cproject
@@ -15,7 +15,7 @@
-
+
diff --git a/Upstream/.settings/language.settings.xml b/Upstream/.settings/language.settings.xml
index c8d28e9..07797fa 100755
--- a/Upstream/.settings/language.settings.xml
+++ b/Upstream/.settings/language.settings.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/Upstream/Debug/Upstream.elf b/Upstream/Debug/Upstream.elf
index 98c54d1..8d226b3 100755
Binary files a/Upstream/Debug/Upstream.elf and b/Upstream/Debug/Upstream.elf differ
diff --git a/Upstream/Debug/Upstream.hex b/Upstream/Debug/Upstream.hex
index 3326866..6b8c52f 100644
--- a/Upstream/Debug/Upstream.hex
+++ b/Upstream/Debug/Upstream.hex
@@ -1,1783 +1,2048 @@
:020000040800F2
-:1000000000C00120656B0008B16B0008B16B0008EF
-:10001000B16B0008B16B0008B16B00080000000074
-:10002000000000000000000000000000B16B0008AC
-:10003000B16B000800000000B16B00081106000859
-:10004000B16B0008B16B0008B16B0008B16B000820
-:10005000B16B0008B16B0008B16B0008B16B000810
-:10006000B16B000879060008B16B0008B16B00089D
-:10007000B16B0008B16B0008B16B0008B16B0008F0
-:10008000B16B0008B16B0008B16B0008B16B0008E0
-:10009000B16B0008B16B0008B16B0008B16B0008D0
-:1000A000B16B0008B16B0008B16B0008B16B0008C0
-:1000B000B16B0008B16B0008B16B0008B16B0008B0
-:1000C000B16B0008B16B0008B16B0008B16B0008A0
-:1000D000B16B0008B16B0008B16B0008B16B000890
-:1000E000B16B0008B16B0008B16B0008B16B000880
-:1000F000B16B0008B16B0008B16B0008B16B000870
-:10010000B16B0008B16B0008B16B0008B16B00085F
-:10011000B16B0008B16B0008B16B0008B16B00084F
-:10012000B16B0008B16B00083906000859060008D9
-:10013000B16B00080000000000000000B16B000877
-:10014000B16B0008B16B0008B16B0008190600081C
-:10015000B16B0008B16B0008B16B0008B16B00080F
-:10016000B16B0008B16B0008B16B0008B16B0008FF
-:10017000B16B0008B16B0008000000000000000037
-:10018000B16B0008B16B000812230B800048704768
-:100190002000002004230B80004870471C00002032
-:1001A00010B50A46034C0448214601F0D5F8204614
-:1001B00010BD00BF5C010020446D000810B50A4668
-:1001C000034C0448214601F0C7F8204610BD00BF8B
-:1001D0005C010020586D000810B50A46034C044825
-:1001E000214601F0B9F8204610BD00BF5C01002097
-:1001F0006C6D000810B50A46034C0448214601F016
-:10020000ABF8204610BD00BF5C0100207C6D0008EB
-:1002100010B50A46034C0448214601F09DF82046DB
-:1002200010BD00BF5C010020886D00080368B3F1B9
-:10023000A04F22D130B587B0104B5A6B42F08002EC
-:100240005A635A6C42F480425A644FF4C05301938B
-:10025000022302930024039404940A250595084878
-:1002600001A904F095F843202946224606F0C8FB70
-:10027000432006F0F7FB07B030BD7047003802405E
-:100280000000024008B50146D0F8AC0301F55F71EB
-:1002900001F0BAF808BD00BF08B5C1EBC1039B006F
-:1002A0000344D0F8AC03D3F8E02101F0DBF808BD3B
-:1002B00008B5C1EBC1039B000344D0F8AC03DA6B73
-:1002C00001F000F908BD00BF08B5D0F8AC0301F09B
-:1002D00073F908BD10B50446C3680BB9002100E0EE
-:1002E0000121D4F8AC0301F053F9D4F8AC0301F0C8
-:1002F0002FF910BD10B50446D0F8AC0301F04CF94D
-:100300002268D2F8003E43F00103C2F8003E10BD5F
-:1003100008B50268D2F8003E23F00103C2F8003E9F
-:10032000D0F8AC0301F042F908BD00BF08B5D0F821
-:10033000AC0301F04FF908BD08B5D0F8AC0301F0EB
-:1003400047F908BD08B5D0F8AC0301F045F908BD80
-:1003500008B5D0F8AC0301F041F908BD08B5D0F8F4
-:10036000AC0301F047F908BD38B503782BBB144C3A
-:10037000C4F8AC03C0F820424FF0A0432360072329
-:1003800063600223E360002525616561A361E56187
-:1003900025626562A562E562204603F0EBFB20461C
-:1003A000802103F08BFB20462946402203F062FBAC
-:1003B00020460121802203F05DFB002038BD00BFF4
-:1003C0005C03002008B5D0F8200203F043FC0020B5
-:1003D00008BD00BF10B51446D0F820021A462346C7
-:1003E00003F088FE002010BD08B5D0F8200203F00D
-:1003F000B5FE002008BD00BF08B5D0F8200203F00C
-:10040000ABFF002008BD00BF08B5D0F8200203F004
-:1004100045FF002008BD00BF08B5D0F8200203F05A
-:100420006FFF002008BD00BFD0F8202211F0800F20
-:1004300008D001F07F03C3EBC3039B00134493F880
-:100440003200704701F07F01C1EBC1018900114406
-:1004500091F8D601704700BF08B5D0F8200203F02C
-:1004600037FE002008BD00BF08B5D0F8200203F019
-:10047000E1FE002008BD00BF08B5D0F8200203F05F
-:1004800099FE002008BD00BF08B5D0F8200203F097
-:10049000C7FE08BD10B5074C20460749002200F0F2
-:1004A00079FF2046054900F08BFF204600F090FFC1
-:1004B00010BD00BF0C0700200000002080000020BD
-:1004C0002DE9F04186B0294B1A6B42F001021A6304
-:1004D0001A6B42F002021A631A6B42F004021A63AA
-:1004E0001A6B42F008021A6341F6FF73019300246D
-:1004F000029401270397049405941D4801A903F071
-:1005000047FF4FF6E77301931A4E304601A903F0F7
-:100510003FFF4FF6FF730193174D284601A903F0E3
-:1005200037FF164801A903F033FF1023019303237B
-:100530000293284601A903F02BFF4FF48058CDF811
-:10054000048002970394284601A903F021FFC5F80F
-:1005500018802025019502970394304601A903F0E5
-:1005600017FFB56106B0BDE8F08100BF003802405A
-:10057000000002400004024000080240000C02405B
-:1005800000B593B01B4A136C43F080531364A2F57B
-:10059000E432136823F4404343F40043136001231F
-:1005A0000693079302230C934FF480030D930823C3
-:1005B0000E934FF4A8730F93042310930723119302
-:1005C00006A802F051FF00B1FEE70D2301930221BE
-:1005D0000291002303934FF4A05304934FF48053EC
-:1005E000059301A803F0C8F800B1FEE713B05DF869
-:1005F00004FB00BF0038024008B506F05DFAFFF7C3
-:10060000BFFFFFF75DFFFFF745FF00F023F9FEE7AF
-:1006100008B506F06BFA08BD10B5054C4FF08053D5
-:10062000A361044803F02CFB4FF48053A36110BD79
-:10063000000802405C03002010B5054C4FF4001385
-:10064000A361044804F014F82023A36110BD00BF87
-:10065000000402403009002010B5054C4FF400138F
-:10066000A361044804F004F82023A36110BD00BF77
-:10067000000402408009002010B5064C4FF400131E
-:10068000A3610322044B5A6100F082F92023A36185
-:1006900010BD00BF00040240003C014008B54FF00F
-:1006A000FF300221002206F0ABF908BD0268404B82
-:1006B0009A427BD12DE9F04786B0044603F5843396
-:1006C0005A6C42F480525A641A6B42F480021A63E4
-:1006D000E023019302270297002503954FF00109BB
-:1006E000CDF8109005230593324E304601A903F052
-:1006F0004FFE4FF01008CDF80480CDF8089030463A
-:1007000001A903F045FEC6F818802B4820642B4B46
-:10071000036084634FF0C06AC0F804A04023836084
-:10072000C5604FF48069C0F8109045618561C5616E
-:100730004FF48038C0F82080456203F025FF3B204D
-:100740000A212A4606F05CF93B2006F08BF91C488A
-:1007500060641C4B03608463C0F804A08560C560BE
-:10076000C0F8109045618561C561C0F82080456280
-:1007700003F00AFF3A200A212A4606F041F93A20FE
-:1007800006F070F9082301930F4B0293039730464C
-:1007900001A903F0FDFD09200A212A4606F030F9DF
-:1007A000092006F05FF906B0BDE8F087704700BF8A
-:1007B00000300140000002408009002058640240DF
-:1007C00030090020406402400000211008B50E48A6
-:1007D0000E4B0360002380F851304FF48272426068
-:1007E0008360C360036143614FF400728261202221
-:1007F000C261036243624FF4005383620723C36202
-:1008000002F042FB08BD00BFFC0D0020003001409B
-:1008100008B50C4B1B78072B00D0FEE701460822D9
-:10082000084B1A70084B1860002321F8043F4FF45E
-:100830008012064B9A610648032202F06DFC00B15B
-:10084000FEE708BDD1090020F00D002000000240A5
-:10085000FC0D002010B500240B4B1C70FFF7B6FFF9
-:100860000A4B1C700A4B1C700A4B1C600A4B1C6024
-:100870000A4B1C600A4B1B6913F0080FFAD10222C5
-:10088000014B1A7010BD00BFD1090020E40B0020FD
-:10089000D4090020F80D0020540E0020E00B0020A9
-:1008A0000000024008B5104B1B78023BDBB2082B5E
-:1008B00000D9FEE70D4B1B6803B1FEE703460C4A67
-:1008C000127822B90A4801220270984709E0094AC1
-:1008D000127822B9074801220270984701E0034AC2
-:1008E0001060002008BD00BFD1090020540E002078
-:1008F000E40B0020D409002008B50D4B1A78931E94
-:10090000DBB2082B00D9FEE7022A02D10722084BEE
-:100910001A70074B1B78072B07D1064B1B6913F086
-:10092000080F02D10448FFF7BDFF002008BD00BF3B
-:10093000D109002000000240110800080A4B1B7872
-:10094000023BDBB2082B00D9FEE7084B1B781BB932
-:100950000648012303707047054B1B781BB90448F8
-:10096000012303707047FEE7D1090020E40B00204B
-:10097000D409002008B5054B1B6823B10021034AA8
-:100980001160984708BD0023037008BD540E002075
-:1009900008B5214B1B78033B062B3BD8DFE803F05F
-:1009A000043A143A243A280004221B4B1A704FF4DC
-:1009B00080121A4B9A611A4B19681A4804310222A4
-:1009C00002F0A4FA38B3FEE70622134B1A704FF474
-:1009D0008012124B9A61124B1B681248991D9A881B
-:1009E00002F094FAB8B1FEE70F48FFF75BFF08BDCD
-:1009F0000A22094B1A704FF48012084B9A61084B77
-:100A000019688A8801320748063192B202F084FBE5
-:100A100008B1FEE7FEE708BDD10900200000024052
-:100A2000F00D0020FC0D00201108000808B51F4B38
-:100A3000984203D01E4B984200D0FEE70378012B6A
-:100A400006D18388012B03D940F20222934200D9B8
-:100A5000FEE70022174B1A60174B1B78023B082B4E
-:100A600021D8DFE803F00D050505050C0C0C0C0082
-:100A7000124B1B6803B1FEE7104B186014E0FEE751
-:100A800003220D4B1A700E4B186082790D4B1A70B1
-:100A9000C2790D4B1A700D4B1B6913F0080F03D16F
-:100AA000FFF776FF00E0FEE7002008BDE40B002022
-:100AB000D4090020E00B0020D1090020F80D00200F
-:100AC000F00D0020F40D0020D009002000000240AD
-:100AD00008B510221B4B9A611B4B1B78042B02D0CC
-:100AE000062B00D0FEE7042B0AD10522164B1A7004
-:100AF000144B1B6913F0080F23D1FFF749FF08BD02
-:100B0000062B1ED1114B1868FFF734FF104B1B68E2
-:100B10007BB103210C4A11700C4A136000220C4B6C
-:100B20001A60084B1B6913F0080F0AD1FFF730FF5A
-:100B300008BD0222044B1A70064B1B680BB1FFF76D
-:100B4000DBFE08BD00000240D1090020F00D0020AE
-:100B5000F80D0020E00B002008B510221D4B9A6113
-:100B60001D4B1B78082B02D00A2B00D0FEE7082B68
-:100B700013D11A4B1B689B88023B9BB2B3F5007FD5
-:100B800000D9FEE70922144B1A70124B1B6913F0AF
-:100B9000080F1ED1FFF7FCFE08BD0A2B19D1022257
-:100BA0000D4B1A700E4B1A780C4B1868837903F0B2
-:100BB0007F03934204D1C2790A4B1B789A4200D03A
-:100BC000FEE7094B1B6803B9FEE70021064A1160E6
-:100BD000984708BD00000240D1090020F00D002018
-:100BE000F40D0020D0090020E00B0020FEE700BF3C
-:100BF00000B583B002464FF4802181604FF400734A
-:100C0000C36000910193044B1B680020694698471C
-:100C100003B05DF804FB00BF6C0E002008B5FFF7C1
-:100C2000A9FE024B1B680020984708BD740E0020E7
-:100C300010B50446FFF79EFE024B1B68207A9847CA
-:100C400010BD00BF740E002008B5094B1860FFF7F7
-:100C500075FE02228280012282710022C271FFF79A
-:100C6000E5FE18B90348FFF71DFE08BD08BD00BF2B
-:100C7000740E00201D0C000808B5084B1860FFF723
-:100C80005DFE0222828001218171C271FFF7CEFEDA
-:100C900018B90348FFF706FE08BD08BD6C0E00201A
-:100CA000F10B0008F8B50021134C2160134C2170A2
-:100CB00013490860134DC5E90023134C069B2360BC
-:100CC000124B079A1A60FFF739FE0E22828001222A
-:100CD00082710322C271D5E90067C0E90267226808
-:100CE0000261FFF7A3FE10B1054A12689047084859
-:100CF000FFF7D8FDF8BD00BF580E0020680E002099
-:100D0000740E0020600E0020700E00207C0E00206B
-:100D10001D0C000808B50C4B18600C4B1B788BB9E8
-:100D200001220A4B1A700A4B1B683BB130B11846BE
-:100D300000F012F80020064B186008BD0548FFF7C8
-:100D4000B1FD08BD002008BD780E0020680E00200F
-:100D5000580E0020590D000838B500220F4B1A70AC
-:100D60000F4B1D6815B90F4B186038BD01460E4C6E
-:100D70002068821C40F202239A4228BF1A4692B28F
-:100D80008A80023A92B2801A20600020A847236825
-:100D900013B10020FFF7BEFF38BD00BF680E002072
-:100DA000780E0020580E00207C0E0020F8B5104967
-:100DB0000860104DC5E900230F4C069B2360FFF728
-:100DC000BDFD0E228280012282710422C271D5E90A
-:100DD0000067C0E9026722680261FFF727FE10B1D1
-:100DE000034A126890470548FFF75CFDF8BD00BF55
-:100DF000740E0020600E0020700E0020310C0008E0
-:100E000008B502318180812282710422C271FFF70C
-:100E10000DFE08BD38B50D4613460222C0F8F42178
-:100E20008361C36100212A46FFF71EFB002038BD05
-:100E300010B50C46134600212246FFF715FB002093
-:100E400010BD00BF10B50C46134600212246FFF727
-:100E500013FB002010BD00BF08B50423C0F8F43117
-:100E600000210A460B46FFF7FFFA002008BD00BF2D
-:100E700008B50523C0F8F43100210A460B46FFF7F8
-:100E8000FBFA002008BD00BF0346002002E001304D
-:100E9000C0B201331A78002AF9D170474B88012B70
-:100EA0000BD110B50446C0F80432D0F814329B6858
-:100EB00098472046FFF7D0FF10BD70470B780370AE
-:100EC0004B7843708B78CA7803EB022343800B790D
-:100ED0004A7903EB022383808B79CA7903EB0223DF
-:100EE000C380704710B504468021FFF78DFA204675
-:100EF0000021FFF789FA10BD30B583B004460D46D6
-:100F00004A88130A013B062B00F28580DFE803F0D4
-:100F1000040D238383657300D0F810321B68007CB6
-:100F20000DF106019847014679E0037C4BB9D0F8F2
-:100F30001432DB6A0DF10600984701460223437024
-:100F40006DE0D0F814321B6B0DF106009847014696
-:100F50000223437063E0D2B2052A3AD8DFE802F0F8
-:100F6000030C151E2730D0F810325B68007C0DF1A1
-:100F700006019847014652E0D0F810329B68007C89
-:100F80000DF106019847014649E0D0F81032DB68C0
-:100F9000007C0DF106019847014640E0D0F8103280
-:100FA0001B69007C0DF106019847014637E0D0F837
-:100FB00010325B69007C0DF10601984701462EE076
-:100FC000D0F810329B69007C0DF10601984701466C
-:100FD00025E02946FFF786FF2EE0037C3BB9D0F8D9
-:100FE00014329B6B0DF106009847014617E0294625
-:100FF000FFF778FF20E0037C4BB9D0F814325B6B2D
-:101000000DF10600984701460723437007E0294683
-:10101000FFF768FF10E02946FFF764FF0CE0BDF81A
-:1010200006304BB1EA883AB19A4228BF1A46ADF869
-:1010300006202046FFF7EEFE03B030BD38B504466B
-:101040008B88E3B9CB88D3B98D7805F07F0590F80C
-:10105000FC31032B02D1FFF745FF38BD80F8FE516C
-:101060002946FFF7F9F92046FFF7F6FE1DB10223E6
-:1010700084F8FC3138BD012384F8FC3138BD2046AA
-:10108000FFF730FF38BD00BF38B504460D468978FC
-:10109000264B1970012903D92946FFF723FF38BDD4
-:1010A00090F8FC31022B02D0032B15D039E081B12E
-:1010B0004160032380F8FC3100F090F9022804D14C
-:1010C00020462946FFF70EFF38BD2046FFF7C4FE35
-:1010D00038BDFFF7C1FE38BD49B9022380F8FC31A5
-:1010E000416000F089F92046FFF7B6FE38BD43683D
-:1010F000994213D0D9B200F07FF90C4B1978616096
-:10110000204600F06BF9022804D120462946FFF75B
-:10111000E9FE38BD2046FFF79FFE38BDFFF79CFE75
-:1011200038BD2946FFF7DEFE38BD00BF480100206C
-:1011300008B50346CA88012A02D0FFF7D3FE08BDCE
-:1011400090F8FC21022A02D0032A08D00CE00146C4
-:10115000002241F8082F0122FFF75CFE08BD191D8F
-:101160000122FFF757FE08BDFFF7BCFE08BD00BF18
-:1011700008B5034690F8FC21023A012A0DD8012255
-:10118000C260D0F804220AB10322C260184603F1FB
-:101190000C010222FFF73EFE08BDFFF7A3FE08BDCB
-:1011A00010B5044690F8FC31023B012B0DD84B885A
-:1011B000012B0CD10023C0F80432D0F814329B6804
-:1011C00098472046FFF748FE10BDFFF78BFE10BD85
-:1011D00008B54B78092B1BD8DFE803F011171A1458
-:1011E0001A08051A0E0BFFF787FE13E0FFF726FF1C
-:1011F00010E0FFF749FF0DE0FFF79AFF0AE0FFF765
-:10120000B7FF07E0FFF74AFE04E0FFF7C9FF01E080
-:10121000FFF768FE002008BD38B504460D4690F87B
-:10122000FC31032B0FD10B79012B09D8D0F81432E4
-:101230009B689847EB8843B92046FFF70DFE04E012
-:10124000FFF750FE01E0FFF74DFE002038BD00BF64
-:1012500038B505460C468A88D1B26378012B26D072
-:10126000002B48D0032B74D190F8FC31022B02D014
-:10127000032B07D017E000296BD0802969D0FFF736
-:10128000C3F866E0638823B919B1802901D0FFF75C
-:10129000BBF8D5F814329B68284621469847284663
-:1012A000FFF7DAFD55E02146FFF71CFE51E090F80C
-:1012B000FC31022B02D0032B07D018E0002948D0C4
-:1012C000802946D0FFF7A0F843E06388002B40D187
-:1012D00011F07F0F07D0FFF79FF8D5F814329B6805
-:1012E0002846214698472846FFF7B6FD31E02146BB
-:1012F000FFF7F8FD2DE090F8FC31022B02D0032B14
-:1013000006D023E011F07F0F23D0FFF77DF820E017
-:1013100012F0800F05D001F07F0400EB04141434A8
-:1013200005E001F07F0400EB041404F58274284604
-:10133000FFF77AF810B10123236001E00023236056
-:10134000284621460222FFF765FD02E02146FFF70D
-:10135000C9FD002038BD00BFD0B170B50D4616469E
-:101360000446FFF791FD0130400080B230802870C4
-:1013700003236B70022307E05A1CD2B20134E954F4
-:10138000531CDBB20021A95421780029F4D170BD8F
-:10139000704700BF90B108B503460020C3F814029F
-:1013A000C3F8180209B1C3F81012012183F8FC1127
-:1013B0001A701846FEF7D8FF002008BD02207047BB
-:1013C00019B1C0F81412002070470220704700BF06
-:1013D00008B5FEF7F7FF002008BD00BF08B5D0F83C
-:1013E000143223B11B68984718B1022008BD0220AF
-:1013F00008BD002008BD00BF08B5D0F814325B68F6
-:101400009847002008BD00BF38B5044600F50275B6
-:101410002846FFF753FD0123C4F8F431B4F80E3227
-:10142000C4F8F83194F8081201F01F03012B08D01A
-:1014300013B1022B0AD00EE020462946FFF7C8FE62
-:101440000EE020462946FFF7E7FE09E02046294640
-:10145000FFF7FEFE04E0204601F08001FEF7D4FF16
-:10146000002038BD38B5044609BBD0F8F431032B51
-:1014700026D1D0F80C31D0F810118B420AD95B1A62
-:10148000C0F80C318B4228BF0B4611469AB2FFF7C9
-:10149000D9FC15E0D0F814321B6923B190F8FC2177
-:1014A000032A00D198472046FFF7D6FC08E0D0F881
-:1014B00014329B6923B190F8FC21032A00D198478C
-:1014C000002038BD38B50446B9BBD0F8F431022B42
-:1014D0002BD1C169036A994206D9CB1AC36111465F
-:1014E0009AB2FFF7A5FC20E08169B1FBF3F203FBA0
-:1014F00012126AB98B420BD8D0F8F831994207D250
-:1015000000210A46FFF794FC0023C4F8F8310CE0F0
-:10151000D4F81432DB682BB194F8FC21032A01D1F2
-:10152000204698472046FFF7A3FC94F80032012B91
-:101530000CD1002384F8003208E0D0F814325B6943
-:1015400023B190F8FC21032A00D19847002038BD30
-:1015500038B5044600210A464023FEF73BFF4025EC
-:10156000C4F810512046802100222B46FEF732FF9E
-:101570002562012384F8FC31D4F818322BB1D4F859
-:1015800014325B68204621799847002038BD00BF9F
-:1015900001740020704700BF90F8FC3180F8FD31E5
-:1015A000042380F8FC310020704700BF90F8FD3123
-:1015B00080F8FC310020704708B590F8FC31032B0F
-:1015C00004D1D0F81432DB6903B19847002008BD7C
-:1015D00000207047002070470020704708B50122A6
-:1015E00080F8FC21D0F8142252680179904700203D
-:1015F00008BD00BF08B5D0F814329B6A9847002098
-:1016000008BD00BF08B5044B1B6800205881034B80
-:101610001B68984708BD00BF800E00208C0E00207C
-:1016200008B5FFF78BF9284B1B6818610830D860A4
-:10163000002306E0244A1268D2680021D154013305
-:10164000DBB2112BF6D9204B1A68D26870211170C9
-:101650001B68DA680C21D17193F8642093F8651047
-:101660008A4222D0D96803EBC20393F844308B70CE
-:10167000154B1B68D96893F8642003EBC20292F8FB
-:1016800049200A73D96893F8642003EBC20292F8E8
-:1016900048204A7393F864200132D2B283F8642060
-:1016A000042A02D1002283F86420074B1B6812220F
-:1016B0005A81064A12681279122A00D85A81044BBC
-:1016C0001B680020984708BD800E0020840E002073
-:1016D0008C0E002008B5FFF731F9144B1A68106121
-:1016E0000830D060124B1B68597811F0010F08D1F7
-:1016F0001049097905311B798B4205D90B460D48F4
-:1017000003E007230C4800E00A48538106E0013B50
-:101710009BB2064A1268D268C15CD154002BF6D144
-:10172000064B1B680020984708BD00BF800E0020B4
-:10173000840E0020986D0008BC6D00088C0E0020FF
-:1017400008B5FFF7FBF80B4B1A6810610830D06042
-:101750000823538107E0013B9BB2064A1268D26816
-:101760000549C95CD154002BF5D1044B1B680020FE
-:10177000984708BD800E0020CC6D00088C0E00201C
-:1017800008B5FFF7DBF80B4B1A6810610830D06022
-:101790000823538107E0013B9BB2064A1268D268D6
-:1017A0000549C95CD154002BF5D1044B1B680020BE
-:1017B000984708BD800E0020C46D00088C0E0020E4
-:1017C00008B50B4B1B68186100F10802DA60DB6B8F
-:1017D000B3F5007F28BF4FF4007306490868012164
-:1017E0009BB2FEF749FE044B1B680020984708BDDA
-:1017F000800E0020900E00208C0E002010B4D0F837
-:10180000184294F8651001F1080004EBC000027161
-:101810001B0283600131C9B284F86510042902D12A
-:10182000002384F865305DF8044B704708B5014427
-:10183000084B1B689B6E994209D9074B1868074BE8
-:10184000197805222123FFF7D9FFFF2000E00020AF
-:1018500040B208BD800E0020900E0020880E0020AF
-:1018600008B5154B1B685B7813F0020F0DD0134BB6
-:101870001868134B197805222423FFF7BFFF114B7B
-:101880001B684FF0FF30984708BD0F4B1B68D86EA0
-:10189000B3F87010FFF7CAFF002805DA094B1B6880
-:1018A0004FF0FF30984708BD074B1B680020588158
-:1018B000044B1B68984708BD840E0020900E002042
-:1018C000880E00208C0E0020800E002008B588B104
-:1018D0000C4B18680C4B197802223A23FFF78EFF45
-:1018E0000A4B1B6805221A72094B1B684FF0FF3028
-:1018F000984708BD054B1B6800205881044B1B68A6
-:10190000984708BD900E0020880E0020800E002011
-:101910008C0E002008B5104B1B68DB696BB10F4BB8
-:1019200018680F4B197805222023FFF767FF0D4B2E
-:101930001B684FF0FF30984708BD094B1B781BB15F
-:101940000120FFF7C3FF08BD0748FFF77DF910B17D
-:101950000120FFF7BBFF08BD800E0020900E002085
-:10196000880E00208C0E0020CD18000810B568B13C
-:10197000214B1868214B197802223A23FFF73EFFCA
-:101980001F4B1B684FF0FF30984710BD1D4C23685C
-:101990001A6102F10800D860086898664968A3F8DF
-:1019A00066100138000E1072DA689B6E013BC3F3BB
-:1019B000074353702368DA689B6E013BC3F3072328
-:1019C00093702368DA689B6E013BD3702368DA68F2
-:1019D00000211171DA685171D968B3F86620120AD2
-:1019E0008A71DA6893F86610D17108225A81044B23
-:1019F0001B680020984710BD900E0020880E002024
-:101A00008C0E0020800E002008B50548FFF734F941
-:101A100020B1012000210A46FFF7A8FF08BD00BF42
-:101A20006D19000810B568B1234B1868234B19785D
-:101A300002223A23FFF7E2FE214B1B684FF0FF30F2
-:101A4000984710BD1F4B1C68226102F10800E0603E
-:101A500000201072E26850701A68D26890701A689C
-:101A6000D2680824D4701B68DC680A68013A120E38
-:101A70002271DC680A68013AC2F307426271DC68CD
-:101A80000A68013AC2F30722A271DC680A68013AC7
-:101A9000E271DA6802241472DA688C795472DA68B6
-:101AA0004C799472DA680979D1720C225A81044B0C
-:101AB0001B68984710BD00BF900E0020880E0020C4
-:101AC0008C0E0020800E002008B50548FFF7D4F8E2
-:101AD00020B1012000210A46FFF7A4FF08BD00BF86
-:101AE000251A000810B568B1154B1868154B197800
-:101AF00004221123FFF782FE134B1B684FF0FF30C7
-:101B0000984710BD1446114B1B681A6902B1FEE7D5
-:101B1000196101F10802DA60094B18688121234636
-:101B2000FEF7A2FC094B1A68D36B1B1BD3630BB9DE
-:101B300003231372044B1B680020984710BD00BF9D
-:101B4000900E0020880E00208C0E0020800E0020B9
-:101B500008B568B10D4B18680D4B197802223A236D
-:101B6000FFF74CFE0B4B1B684FF0FF30984708BD4A
-:101B7000094B1B6802221A720848FFF7CBF820B104
-:101B8000012000210A46FFF7ADFF08BD900E00209E
-:101B9000880E00208C0E0020800E0020E51A000820
-:101BA00010B582B0364B1B681A7A002A5DD193F9C2
-:101BB0002020002A0DDB334A106893F821100522FB
-:101BC0002023FFF71BFE304B1B684FF0FF30984778
-:101BD00054E02E4A1468A078E278120442EA0062C7
-:101BE000207942EA002260791043D866E279217AAE
-:101BF00041EA0221A3F87010FFF718FE00280FDA5F
-:101C00001F4B1B681F4A106893F8211005222023E0
-:101C1000FFF7F4FD1C4B1B684FF0FF3098472DE099
-:101C2000174B1B68D969B3F87000B3F8662002FB44
-:101C300000F291420DD0134A106893F8211005224A
-:101C40002023FFF7DBFD104B1B684FF0FF30984758
-:101C500014E0DA6E009001910D480023FFF722F89E
-:101C600060B10120FFF774FF08E00A48FFF752F85F
-:101C700020B1012000210A46FFF734FF02B010BD59
-:101C8000800E0020900E00208C0E0020840E00207C
-:101C9000511B0008E51A000808B502280DD1194BA0
-:101CA0001868194B197802222723FFF7A7FD174B55
-:101CB0001B684FF0FF30984708BD68B1114B18689A
-:101CC000114B197802223A23FFF798FD0F4B1B683E
-:101CD0004FF0FF30984708BD0D4B1B6801221A7268
-:101CE0000C48FEF7DFFD60B1064B1868064B19780B
-:101CF00002223A23FFF782FD044B1B684FF0FF30AE
-:101D0000984708BD900E0020880E00208C0E002001
-:101D1000800E0020C117000810B582B04F4B1A6822
-:101D2000137A002B5DD192F92030002B0DDA4C4B49
-:101D3000186892F8211005222023FFF75FFD494B18
-:101D40001B684FF0FF30984785E0474B1C68A07830
-:101D5000E3781B0443EA0063207943EA00236079B7
-:101D60001843D066E379217A41EA0321A2F8701082
-:101D7000FFF75CFD00280FDA384B1B68384A106803
-:101D800093F8211005222023FFF738FD354B1B68FF
-:101D90004FF0FF3098475EE0304B1B68D869B3F8CE
-:101DA0007010B3F8662002FB01F290420DD02C4A6D
-:101DB000106893F8211005222023FFF71FFD294BFF
-:101DC0001B684FF0FF30984745E0DA6E00912748D6
-:101DD0000023FEF7EBFF00283DD00120FFF75CFF5A
-:101DE00039E0D46BB4F5007F28BF4FF4007410695C
-:101DF0002146FFF705F868B1194B18681C4B197894
-:101E000004220323FFF7FAFC164B1B684FF0FF3048
-:101E1000984720E0114B1A68D36B1C1BD4634CB954
-:101E20000F4B1868002100F051F90E4B1B68002081
-:101E3000984710E00F48FEF735FD60B1084B186871
-:101E40000B4B197802223A23FFF7D8FC054B1B688D
-:101E50004FF0FF30984702B010BD00BF800E002049
-:101E6000900E00208C0E0020840E0020991C00088B
-:101E7000880E0020C117000810B5364C2060364C83
-:101E80002260364C2170364C2360D0F81842354B16
-:101E90001C6013785A2B53D8DFE803F02E525231CE
-:101EA0005252525252525252525252525252345230
-:101EB0005252525252523D3752523A525252524359
-:101EC0005246525249524C525252524F5252525210
-:101ED00052525252525252525252525252525252E2
-:101EE00052525252525252525252525252525252D2
-:101EF0005252525252524000FFF70CFD10BDFFF7F4
-:101F00008FFB10BDFFF7E6FB10BDFFF77BFB10BD9D
-:101F1000FFF778FB10BDFFF713FC10BDFFF730FC97
-:101F200010BDFFF7D1FD10BDFFF76EFD10BDFFF72F
-:101F300037FE10BDFFF7F0FE10BDFFF791FC10BD9E
-:101F400005222023FFF75AFC054B1B684FF0FF309A
-:101F5000984710BD900E0020840E0020880E0020AF
-:101F60008C0E0020800E002038B50546D0F81842AF
-:101F700094F8203033B9E36923B1637A13B90121AE
-:101F8000FEF742FA28468121FEF73EFA637A022BD9
-:101F900006D12846012104F114021F23FEF76CFA32
-:101FA00038BD00BF38B50546D0F81842A369A36311
-:101FB000E369E3630121FEF767FA1F280CD1626928
-:101FC000114B9A4208D194F82110012904D894F8B1
-:101FD00022300BB1102B0CD9284694F82110052281
-:101FE0002023FFF70BFC022363722846FFF7BCFF98
-:101FF00038BD064B1D60064B1C60284604F12302C9
-:10200000044BFFF739FF38BD55534243940E00206F
-:10201000980E00206921000810B50C46D0F818125F
-:10202000CB699A4228BF1A4693B2CA6BD21ACA63C6
-:10203000002281F8402004220A7281212246FEF704
-:1020400013FA10BD38B50546D0F8184200232372A4
-:10205000637284F8653084F864300121FEF7CCF9AE
-:1020600028468121FEF7C8F92846012104F114020F
-:102070001F23FEF701FA38BD08B5D0F81822002357
-:1020800013720121517214321F23FEF7F5F908BDB6
-:10209000D0F8183200221A72704700BF08B5D0F885
-:1020A0001822137A13B1012B03D008BDFFF77AFF72
-:1020B00008BD044B186092F821102332024BFFF741
-:1020C000DBFE08BD940E00205121000838B50546FE
-:1020D000D0F81842094B636384F840100023237240
-:1020E000812104F134020D23FEF7BEF928460121B7
-:1020F00004F114021F23FEF7BFF938BD55534253B4
-:1021000008B5D0F81822137A022B03D00ED3042B73
-:1021100009D908BD064B186092F821102332054BEF
-:10212000FFF7AAFE08BD0021FFF7D0FF08BD00BFE2
-:10213000940E002039210008002806DA08B5034B68
-:1021400018680121FFF7C2FF08BD7047940E0020F8
-:10215000002806DA08B5034B18680121FFF7B6FF1F
-:1021600008BD7047940E002008B500280FDA134B05
-:102170001B681B7A052B05D1114B18680121FFF74D
-:10218000A5FF08BD0E4B1868FFF7EEFE08BD0B4B10
-:1021900019680B7A013BDBB2022B0DD94A892AB1AF
-:1021A000074B1868C968FFF737FF08BD22B9044B11
-:1021B00018680021FFF78AFF08BD00BF980E0020B5
-:1021C000940E002010B5D0F81842637A022B05D186
-:1021D0008121FEF719F90023637210BD11F0800F01
-:1021E00004D0012B02D00121FFF770FF10BD00BF0A
-:1021F00020230380004870476000002020230380D4
-:1022000000487047BC00002020230380004870472E
-:10221000340000200A230380004870475400002047
-:1022200010B50446037C6BB9012102224FF4007300
-:10223000FEF7D0F82046812102224FF40073FEF70A
-:10224000C9F80AE0012102224023FEF7C3F8204624
-:10225000812102224023FEF7BDF8742004F0AAFC7D
-:10226000C4F8180238B12046FFF7ECFED4F8183253
-:102270000020186110BD012010BD00BF10B504463C
-:102280000121FEF7B1F820468121FEF7ADF8204686
-:10229000FFF7FEFED4F8180220B104F093FC0023EF
-:1022A000C4F81832002010BD70B506460C46D0F8B0
-:1022B0001812237813F0600530D0202D6FD162788A
-:1022C000FE2A02D0FF2A13D023E0628852B9E288A6
-:1022D000012A07D113F0800F04D000250D60FEF70E
-:1022E00099FD5DE030462146FEF7FCFD022557E0F2
-:1022F000628842B9E28832B913F0800F03D1FFF748
-:10230000BBFE00254CE030462146FEF7EBFD0225E2
-:1023100046E02146FEF7E6FD022541E063780A2B00
-:1023200004D00B2B07D0012B3AD107E00431012256
-:10233000FEF770FD34E0A3784B6031E02179FEF7C1
-:102340005BF830462179FEF74FF894F90430002B02
-:1023500010DA337C3BB93046812102224FF40073FE
-:10236000FEF738F816E03046812102224023FEF7BE
-:1023700031F80FE0337C3BB93046012102224FF4A3
-:102380000073FEF727F805E03046012102224023C2
-:10239000FEF720F830462179FFF714FF00E0002512
-:1023A000284670BD08B5FFF7ABFE002008BD00BF92
-:1023B00008B5FFF773FE002008BD00BFD0F8183243
-:1023C00063B11B6953B110B504461846FEF7D2FA43
-:1023D000D4F8183200221A61002010BD0020704786
-:1023E0000C4B01E0013B10D00269002AFADA0369C4
-:1023F00043F001030361074B01E0013B07D0026991
-:1024000012F0010FF9D1002070470320704703201C
-:10241000704700BF400D030084B010B5044603A808
-:1024200080E80E00089B012B18D1A36B23F48033A6
-:10243000A363E36823F4840323F04003E360E368C9
-:1024400023F44013E3600D9B012B03D1E36843F4B5
-:102450008013E3602046FFF7C3FF09E0E36843F021
-:102460004003E3602046FFF7BBFF4FF48033A363D4
-:10247000069B012B07D1A36843F00C03A360A3685C
-:1024800043F02003A3600020BDE8104004B0704773
-:10249000836843F00103836000207047836823F062
-:1024A000010383600020704708B5C36823F0C04370
-:1024B000C360012904D1C36843F00053C36004E042
-:1024C00019B9C36843F08043C360322004F01CFB99
-:1024D000002008BD490141F020010161054B01E0E8
-:1024E000013B05D0026912F0200FF9D1002070479E
-:1024F00003207047400D030010230361054B01E0EA
-:10250000013B05D0026912F0100FF9D1002070478D
-:1025100003207047400D0300D0F800381943C0F87D
-:1025200000180020704700BF84B0F8B5044607A823
-:1025300080E80E00A36B43F40023A3630F9E1EB933
-:10254000A36B43F40013A3630023C4F8003E04F517
-:102550000065D4F80038C4F800380C9B012B0BD16F
-:10256000099B23B920460021FFF7D6FF08E020464B
-:102570000121FFF7D1FF03E020460321FFF7CCFF45
-:1025800020461021FFF7A6FF2046FFF7B5FF0023E6
-:102590002B616B614FF0FF32AA61EB61079848B382
-:1025A00004F51063002219461F68002F03DA4FF06C
-:1025B00090471F6001E000271F6000270F61FF2781
-:1025C0008F60013220338242EDD304F53063002264
-:1025D00019461F68002F03DA4FF090471F6001E093
-:1025E00000271F6000270F61FF278F600132203313
-:1025F0008242EDD12B6923F480732B610A9B012B5E
-:102600000ED1184B2B632B6B43F4803343F0030341
-:102610002B632B6B0023A3616FF08043636109E0A0
-:102620000022A2616FF0804262611BB9A36943F08E
-:102630001003A361A2690C4B1343A3610D9B1BB153
-:10264000A36943F00803A361012E05D1A36943F0F8
-:10265000804343F00403A3610020BDE8F84004B0C8
-:10266000704700BF0001800000383C80D0F8083877
-:1026700000F5006013F0060F10D0836803F0060326
-:10268000022B0DD0836803F00603062B0AD0836863
-:1026900003F00603042B07D1022070470020704787
-:1026A00003207047032070470020704770B44B78B8
-:1026B000012B1FD1D0F81C280D78AB409BB21343DF
-:1026C000C0F81C380E78730103F510631A5812F421
-:1026D000004F2DD11C5844F0805545F400458A68C0
-:1026E000C2F30A042C43CA7844EA824242EA865280
-:1026F0001A501DE0D0F81C280D784FF48033AB4001
-:102700001343C0F81C380B785B0103F530631A588B
-:1027100012F4004F0CD11A5842F0805444F4004493
-:102720008A68C2F30A022243C97842EA81421A50F7
-:10273000002070BC704700BF30B44B78012B1BD118
-:10274000D0F83C580C7803FA04F4A4B225EA040447
-:10275000C0F83C48D0F81C480D78AB409BB224EA46
-:102760000303C0F81C380B785B0103F510631A589B
-:1027700022F400421A5019E0D0F83C480D780122AA
-:1027800002FA05F524EA0544C0F83C48D0F81C4894
-:102790000D78AA4024EA0242C0F81C280B785B019D
-:1027A00003F530631A5822F400421A50002030BC5E
-:1027B000704700BF30B44B78012B68D14B69EBB93F
-:1027C0000B7800EB4313D3F8104924F0FF5424F4A2
-:1027D000C014C3F810490B7800EB4313D3F8104929
-:1027E00044F40024C3F810490B7800EB4313D3F8EA
-:1027F0001049E40CE404C3F810492CE00B7800EB1A
-:102800004313D3F81049E40CE404C3F810490B78DF
-:1028100000EB4313D3F8104924F0FF5424F4C01400
-:10282000C3F810498B684C699C4200D94B610B7806
-:1028300000EB4313D3F8104944F40024C3F81049C3
-:102840000B7800EB4313D3F810594C69C4F312040E
-:102850002C43C3F81049012A06D10B7800EB43132F
-:102860000A69C3F8142909E04B693BB1D0F8342850
-:102870000D780123AB401343C0F834380B785B016B
-:1028800003F51063C25842F00442C2503BE00B789B
-:1028900000EB4313D3F8104BE40CE404C3F8104BE3
-:1028A0000B7800EB4313D3F8104B24F0FF5424F4BF
-:1028B000C014C3F8104B4B690BB18B684B610B789C
-:1028C00000EB4313D3F8104B44F40024C3F8104B2F
-:1028D0000B7800EB4313D3F8105B8C68C4F312043D
-:1028E0002C43C3F8104B012A05D10B7800EB43139E
-:1028F000CA68C3F8142B0B785B0103F53063C25828
-:1029000042F00442C250002030BC704730B49DF801
-:10291000084064B903339B1009D000F5805000EBE8
-:10292000023251F8045B15600134A342F9D1002052
-:1029300030BC704770B582B04B78012B40F0A98055
-:102940004B69EBB90B7800EB4313D3F8104924F033
-:10295000FF5424F4C014C3F810490B7800EB431360
-:10296000D3F8104944F40024C3F810490B7800EB65
-:102970004313D3F81049E40CE404C3F8104945E0CC
-:102980000B7800EB4313D3F81049E40CE404C3F8CC
-:1029900010490B7800EB4313D3F8104924F0FF548F
-:1029A00024F4C014C3F810490C7800EB4414D4F894
-:1029B00010598E684B693344013BB3FBF6F3724EFA
-:1029C00006EAC3432B43C4F810390B7800EB4313DA
-:1029D000D3F810594C69C4F312042C43C3F81049BE
-:1029E000CB78012B40F0C8800B7800EB4313D3F871
-:1029F000104924F0C044C3F810490B7800EB43138E
-:102A0000D3F8104944F00054C3F81049012A06D104
-:102A10000B7800EB43130C69C3F814490CE0CB7836
-:102A2000012B0CD04B6903B3D0F834480E78012346
-:102A3000B3402343C0F83438CB78012B15D1D0F8FC
-:102A4000083813F4807F08D10B785B0103F510631D
-:102A5000C45844F00054C45007E00B785B0103F500
-:102A60001063C45844F08054C4500B785B0103F5E4
-:102A70001063C45844F00444C450CB78012B7FD178
-:102A800014460B46C9681A789B8A0094FFF73EFFEC
-:102A900076E00B7800EB4313D3F8104BE40CE4041E
-:102AA000C3F8104B0B7800EB4313D3F8104B24F012
-:102AB000FF5424F4C014C3F8104B4B69A3B90B782E
-:102AC00000EB4313D3F8105B8C68C4F312042C435F
-:102AD000C3F8104B0B7800EB4313D3F8104B44F4BE
-:102AE0000024C3F8104B1DE08D680C7800EB4414F3
-:102AF000D4F8106B2B44013BB3FBF5F39BB2224D92
-:102B000005EAC3453543C4F8105B0C7800EB441468
-:102B1000D4F8106B8D6805FB03F3C3F31203334342
-:102B2000C4F8103B012A05D10B7800EB4313CA68A7
-:102B3000C3F8142BCB78012B15D1D0F8083813F437
-:102B4000807F08D10B785B0103F53063C25842F0F7
-:102B50000052C25007E00B785B0103F53063C258A6
-:102B600042F08052C2500B785B0103F53063C258CB
-:102B700042F00442C25003E0012A7FF453AF47E71A
-:102B8000002002B070BD00BF0000F81F0332921099
-:102B90000FD030B40C46002300F580552D6844F862
-:102BA000045B01339A42F7D101EB8201084630BC45
-:102BB00070470846704700BF4B78012B13D10B7844
-:102BC0005B0103F51063C258002A03DBC25822F0F0
-:102BD0008042C2500B785B0103F51063C25842F487
-:102BE0000012C25012E00B785B0103F53063C2584B
-:102BF000002A03DBC25822F08042C2500B785B01EE
-:102C000003F53063C25842F40012C25000207047EE
-:102C10004B78012B15D10B785B0103F51063C2587B
-:102C200022F40012C250CB78023BDBB2012B1DD83C
-:102C30000B785B0103F51063C25842F08052C2501A
-:102C400014E00B785B0103F53063C25822F40012E4
-:102C5000C250CB78023BDBB2012B07D80B785B016B
-:102C600003F53063C25842F08052C25000207047D2
-:102C7000D0F8003823F4FE63C0F80038D0F80038EC
-:102C8000090101F4FE610B43C0F8003800207047D1
-:102C900008B5D0F8043823F00203C0F80438032044
-:102CA00003F032FF002008BD08B5D0F8043843F027
-:102CB0000203C0F80438032003F026FF002008BDFB
-:102CC0004369806918407047D0F8183800F50060F3
-:102CD000C0691840000C704700F50063D0F8180870
-:102CE000DB69184080B2704700F5306303EB411197
-:102CF0008B6800F5006040691840704710B4D0F848
-:102D00001048D0F8343800EB4110D0F80809CB4017
-:102D1000DB01DBB2234318405DF8044B704700BF72
-:102D2000406900F001007047D0F8003923F4FF63D8
-:102D300023F00703C0F8003900F500639A6802F039
-:102D40000602042A05D1D0F8002942F00302C0F897
-:102D500000295A6842F480725A600020704700BF10
-:102D600010B40024C0F8104BD0F8104B44F40024E9
-:102D7000C0F8104BD0F8104B44F01804C0F8104BBA
-:102D8000D0F8104B44F0C044C0F8104B012905D1D5
-:102D9000C0F8142B4FF08023C0F8003B00205DF8F2
-:102DA000044B70472DE9F04106460C4690461D46FF
-:102DB00003F0A4FE0746B8F1000F2AD05BE0B5F19E
-:102DC000FF3F26D025B103F099FEC01BA84220D9B1
-:102DD0003268536823F0E00353603268136823F0CD
-:102DE00040031360B36AB3F5005F09D1326813681A
-:102DF00023F4005313603268136843F400531360E4
-:102E0000012386F85130002386F850300320BDE8B6
-:102E1000F08133689B682340A342D0D10020BDE8F5
-:102E2000F081B5F1FF3F26D025B103F067FEC01B4E
-:102E3000A84220D93268536823F0E0035360326817
-:102E4000136823F040031360B36AB3F5005F09D140
-:102E50003268136823F4005313603268136843F434
-:102E600000531360012386F85130002386F8503058
-:102E70000320BDE8F08133689B682340A342D0D093
-:102E80000020BDE8F08100BF00283CD010B504460A
-:102E900090F8513013F0FF0F01D1FDF707FC02232A
-:102EA00084F851302268136823F0400313602168CE
-:102EB0006268A3681A43E3681A4323691A43636983
-:102EC0001A43A36903F400731343E2691343226AAC
-:102ED0001343A26A1A430A602168638B03F0040259
-:102EE000636A13434B602368E26A1A612268D369FC
-:102EF00023F40063D36100206065012384F851301E
-:102F000084F8500010BD0120704700BF10B5044682
-:102F100090F85130DBB2012B50D1002950D0002A5B
-:102F200050D090F85030012B4ED0012380F8503013
-:102F3000122380F851300023436501638286C286E4
-:102F4000C36483648387C3878368B3F5004F04D168
-:102F50000268136843F480431360A36AB3F5005F0B
-:102F600009D12268136823F40053136022681368A0
-:102F700043F400531360236C154A1A64236C154AFA
-:102F8000DA63236C144A9A642268206C216B0C3239
-:102F9000E38E01F037FB2268536843F0020353606D
-:102FA000002384F8503023681A6812F0400F0DD1C6
-:102FB0001A6842F040021A60002010BD022010BDC5
-:102FC000012010BD012010BD022010BD002010BD49
-:102FD000113200085D3200083D32000838B5044661
-:102FE00090F85100C0B2012808D06568B5F5827F1D
-:102FF0007AD1A568002D79D1222879D1002979D0FC
-:10300000002A79D0002B79D094F85000012877D08D
-:10301000012084F8500094F85100C0B2222802D058
-:10302000322084F85100002060652163A386E38686
-:10303000A263A387E387A064E064A36AB3F5005F9B
-:1030400009D12268136823F40053136022681368BF
-:1030500043F40053136094F85130DBB2222B06D1B5
-:10306000636C284A1A64636C274ADA6305E0636C70
-:10307000264A1A64636C264ADA63636C254A9A64AA
-:103080002168606C0C31A26BE38F01F0BBFA2268FF
-:10309000536843F001035360236C0022DA6394F811
-:1030A0005130DBB2322B03D1236C1A4A9A6402E00E
-:1030B000236C00229A642268206C216B0C32E38E10
-:1030C00001F0A0FA23681A6812F0400F03D11A68C1
-:1030D00042F040021A602268536843F002035360D2
-:1030E000002084F8500038BD022038BD022038BDD1
-:1030F000022038BD012038BD012038BD012038BD77
-:10310000022038BD21320008D532000831320008D3
-:103110009D3300083D32000838B50446134690F848
-:103120005120D2B2012A5ED10D4600295DD0002B7C
-:103130005DD090F85020012A5BD0012280F8502009
-:10314000222280F8512000224265A1638387C38731
-:103150008264C2648286C2868268B2F5004F05D15D
-:103160000268136823F4804313600BE052B942688D
-:10317000B2F5827F06D1002280F850202A46FFF760
-:103180002DFF38BDA36AB3F5005F09D1226813682B
-:1031900023F4005313602268136843F40053136050
-:1031A000636C164A1A64636C154ADA63636C154AD9
-:1031B0009A642168606C0C31A26BE38F01F022FAF3
-:1031C0002268536843F001035360002384F85030B1
-:1031D00023681A6812F0400F0DD11A6842F04002BD
-:1031E0001A60002038BD022038BD012038BD012002
-:1031F00038BD022038BD002038BD00BF2132000894
-:10320000D53200083D320008704700BF704700BF4C
-:1032100008B5806BFFF7FAFF08BD00BF704700BF1D
-:1032200008B5806BFFF7FAFF08BD00BF704700BF0D
-:1032300008B5806BFFF7FAFF08BD00BF08B5806BCB
-:103240000023C386C387012380F85130436D43F0C8
-:1032500010034365FDF7CAFC08BD00BF10B582B07E
-:10326000846B03681B6813F4807F1FD12046022102
-:1032700000220A23FFF796FD18B1636D43F0100397
-:1032800063652268536823F002035360204680215F
-:1032900001220A23FFF786FD18B1636D43F0100386
-:1032A00063650023E386012384F85130A3682BB9BA
-:1032B0002368DA6801929B680193019B636D1BB1DF
-:1032C0002046FDF793FC02E02046FDF701FC02B02A
-:1032D00010BD00BF10B582B0846B03681B6813F487
-:1032E000807F55D16368B3F5827F0BD1A368B3F5B6
-:1032F000004F02D0B3F5806F04D12268136823F029
-:10330000400313602268536823F00103536022686E
-:10331000536823F0020353600023E387012384F8FA
-:103320005130A36AB3F5005F28D120460121002265
-:103330000A23FFF737FD18B1636D43F0100363658F
-:103340002368DB689BB2ADF80630BDF80630204636
-:1033500001210A460A23FFF725FD18B1636D43F0EA
-:103360001003636523689A6812F0100F06D0626D2F
-:1033700042F0020262656FF010029A60636D1BB149
-:103380002046FDF733FC06E02046FDF7E5FB02E0B2
-:103390002046FDF7E1FB02B010BD00BF10B582B0C2
-:1033A000846B03681B6813F4807F57D1A36AB3F55D
-:1033B000005F23D1204601210A460A23FFF7F2FCD1
-:1033C00050B92046012100220A23FFF7EBFC18B177
-:1033D000636D43F0100363652268D3689BB2ADF858
-:1033E0000630BDF80630936813F0100F06D0636DF9
-:1033F00043F0020363656FF01003936020460221DF
-:1034000000220A23FFF7CEFC18B1636D43F01003CE
-:1034100063652268536823F00203536020468021CD
-:1034200001220A23FFF7BEFC18B1636D43F01003BD
-:1034300063652268536823F0010353600023E38629
-:10344000E387012384F85130636D1BB12046FDF7FB
-:10345000CDFB06E02046FFF7D7FE02E02046FFF74F
-:10346000D3FE02B010BD00BF38B50446036813F0A8
-:10347000010F3AD0B34B9B6803F00C03042B00F010
-:103480004B81B04B9B6803F00C03082B05D1AD4B6F
-:103490005B6813F4800F40F041810022AA4B1A7040
-:1034A00003F02CFB054606E003F028FB401BB0F5BB
-:1034B000FA7F00F23581A34B1B6813F4003FF3D170
-:1034C0002279A14B1A7063687BB103F017FB0546A4
-:1034D00006E003F013FB401BB0F5FA7F00F22281F7
-:1034E000984B1B6813F4003FF3D0236813F0020FCE
-:1034F00049D0944B9B6813F00C0F0AD0914B9B68FA
-:1035000003F00C03082B09D18E4B5B6813F4800F7A
-:1035100004D1E368012B40F0078126E0E36893B112
-:1035200001228A4B1A6003F0E9FA054605E003F030
-:10353000E5FA401B642800F2F980824B1B6813F007
-:10354000020FF4D011E00022804B1A6003F0D6FA8B
-:10355000054605E003F0D2FA401B642800F2E8803B
-:10356000784B1B6813F0020FF4D17648026822F002
-:10357000F8012269F82393FAA3F3B3FA83F3DBB2D9
-:103580009A400A430260236813F0080F26D063694B
-:1035900093B101226E4B1A6003F0B0FA054605E0C4
-:1035A00003F0ACFA401B642800F2C480654B5B6FEB
-:1035B00013F0020FF4D011E00022654B1A6003F003
-:1035C0009DFA054605E003F099FA401B642800F2D5
-:1035D000B3805C4B5B6F13F0020FF4D1236813F0E0
-:1035E000040F42D0574A136C43F080531364A2F582
-:1035F000E432136843F48073136003F07FFA0546E6
-:1036000005E003F07BFA401B642800F29780514BE1
-:103610001B6813F4807FF4D000224F4B1A7003F024
-:103620006DFA054607E003F069FA401B41F2883362
-:10363000984200F28580434B1B6F13F0020FF2D1CA
-:10364000227A454B1A70A3687BB103F057FA0546FE
-:1036500006E003F053FA401B41F2883398427FD8CA
-:10366000384B1B6F13F0020FF3D0A369002B79D0F6
-:10367000344B9B6803F00C03082B75D00022374BAA
-:103680001A6003F03BFA054604E003F037FA401BEA
-:1036900064286BD82B4B1B6813F0007FF5D1A3690E
-:1036A000022B65D1216A626A47F6C07393FAA3F3CD
-:1036B000B3FA83F3DBB29A401143A36A5B08013B80
-:1036C0004FF4403292FAA2F2B2FA82F2D2B29340AE
-:1036D0000B43E2691343E26A4FF0706191FAA1F182
-:1036E000B1FA81F1C9B28A40134343F00053154A3D
-:1036F00053600122194B1A6003F000FA044604E0FB
-:1037000003F0FCF9001B642834D80E4B1B6813F03F
-:10371000007FF5D0002038BD012038BD012038BD24
-:10372000032038BD032038BD012038BD032038BD3B
-:10373000032038BD032038BD032038BD032038BD29
-:10374000032038BD003802400238024000004742E2
-:10375000800E4742007000407038024060004742CF
-:10376000032038BD002038BD012038BD032038BDFE
-:10377000002038BD032038BD70B504460D46874B88
-:103780001B6803F00F038B426BD2CAB2834B1A70D3
-:103790001B6803F00F038B4240F0E480036813F0D2
-:1037A000020F06D07E498B6823F0F0028368134332
-:1037B0008B60236813F0010F00F0B8806268012A63
-:1037C00005D1774B1B6813F4003F0ED1CCE0022AE1
-:1037D00005D1734B1B6813F0007F06D1C6E0704B18
-:1037E0001B6813F0020F00F0C3806D498B6823F053
-:1037F000030313438B6003F081F905466368012BD3
-:103800000FD107E003F07AF9401B41F28833984268
-:1038100000F2B080624B9B6803F00C03042BF1D1E3
-:1038200084E0022B17D107E003F068F9401B41F256
-:103830008833984200F2A080594B9B6803F00C0338
-:10384000082BF1D172E003F059F9401B41F28833A3
-:10385000984200F29380524B9B6813F00C0FF2D108
-:1038600064E0036813F0020F06D04D498B6823F023
-:10387000F002836813438B60236813F0010F4DD06F
-:103880006268012A05D1464B1B6813F4003F0DD135
-:1038900076E0022A05D1424B1B6813F0007F05D168
-:1038A00070E03F4B1B6813F0020F6DD03C498B68F2
-:1038B00023F0030313438B6003F020F9064663688B
-:1038C000012B0ED106E003F019F9801B41F2883379
-:1038D00098425BD8324B9B6803F00C03042BF2D167
-:1038E0001CE0022B15D106E003F008F9801B41F221
-:1038F000883398424CD82A4B9B6803F00C03082B62
-:10390000F2D10BE003F0FAF8801B41F288339842C1
-:1039100040D8234B9B6813F00C0FF3D1EAB21F4B36
-:103920001A701B6803F00F03AB4235D1236813F004
-:10393000040F06D01A498B6823F4E052E36813435E
-:103940008B60236813F0080F07D0154A936823F49F
-:103950006043216943EAC1039360002003F09EF8AD
-:10396000002070BD012070BD012070BD012070BD20
-:10397000012070BD032070BD032070BD032070BD09
-:10398000012070BD012070BD012070BD032070BDFD
-:10399000032070BD032070BD012070BD003C0240BB
-:1039A00000380240224B9B6803F00C03042B3DD0EF
-:1039B000082B01D01F4870471D4B586800F03F008E
-:1039C0005B6813F4800F10D01B4BB3FBF0F3184A65
-:1039D000506847F6C072104092FAA2F2B2FA82F230
-:1039E000D2B2D04000FB03F30FE0124BB3FBF0F375
-:1039F0000F4A506847F6C072104092FAA2F2B2FA2B
-:103A000082F2D2B2D04000FB03F3094A506800F4BE
-:103A100040304FF4403292FAA2F2B2FA82F2D2B2BD
-:103A2000D04001304000B3FBF0F0704702487047CF
-:103A3000003802400024F40000127A0008B5FFF7B5
-:103A4000B1FF094B9B6803F0F002F02393FAA3F354
-:103A5000B3FA83F3DBB222FA03F3044AD35CD8400F
-:103A6000034B186008BD00BF00380240D46D000849
-:103A7000DC00002030B40468636A19B943EA0240EC
-:103A8000A06218E00D46A06A03EB1040002308E096
-:103A900003F1400104EB8101496800EB114001335F
-:103AA000DBB2691E8B42F3DB40EA024005F13F01C5
-:103AB00004EB81014860002030BC70470368596204
-:103AC000002070472DE9F04383B007460E46D0F83A
-:103AD0000080CB005B1A9B0003445D6C9A6CAD1AAE
-:103AE0009B6B9D4200D91D46EB1C00D503339B10F8
-:103AF0001BE0F400A41BA4003C44E16B3B7C00935E
-:103B00004046F2B2ABB2FEF701FFE36B2B44E36336
-:103B1000A36C1D44A564636C5D1BA36B9D4200D91F
-:103B20001D46EB1C00D503339B10414608EB4612A3
-:103B300002F51062926992B29A4209D3F3009B1B7C
-:103B40009B003B449A6C5B6C9A4201D2002BD0D113
-:103B5000002D0ADC0123B340D1F8342822EA030304
-:103B6000C1F834383846FCF7F9FB002003B0BDE853
-:103B7000F08300BF002869D0F0B589B00446032364
-:103B800080F87933FCF752FB2068FEF787FC254666
-:103B900055F8107B6E460FCD0FC695E80F0086E8EE
-:103BA0000F00231D0ECB3846FEF736FC206800219F
-:103BB000FEF77AFC002210E0D3009B1A9B002344FE
-:103BC000012183F8311083F83020DA86002183F850
-:103BD00033109963D963596401320E2AECD900225B
-:103BE00018E0D3009B1A9B002344002183F8D511D1
-:103BF00083F8D421DA8683F8D711C3F8DC11C3F82F
-:103C0000E011C3F8E811236802F1400003EB8003E0
-:103C1000596001320E2AE4D9254655F8107B6E46CC
-:103C20000FCD0FC695E80F0086E80F00231D0ECBC1
-:103C30003846FEF779FC012384F87933002584F8AF
-:103C400078532068FFF730F8284601E001207047DC
-:103C500009B0F0BD90F87833012B0ED010B50446B2
-:103C6000012380F878330068FFF712F82068FEF728
-:103C70000FFC002084F8780310BD0220704700BFBD
-:103C80002DE9F84F044606683046FFF749F800284A
-:103C900040F01B822068FFF713F8002800F015821F
-:103CA0002068FFF70DF810F0020F02D023680222FF
-:103CB0005A612068FFF704F810F4002F5CD02068E8
-:103CC000FFF702F80746002553E017F0010F4ED02A
-:103CD0005FFA85F920684946FFF706F8804610F03C
-:103CE000010F31D006EB45130122C3F8082B03F571
-:103CF00030632269012A12D1EA00521B9200224449
-:103D000002F5EC71D2F8DC011B69C3F31203C01A8F
-:103D1000C2F8EC01D2F8E0214B6813448B602046D6
-:103D20004946FCF7B9FA2369012B0DD165B9C5EBFA
-:103D3000C5039B002344D3F8E8312BB92068012147
-:103D400004F55F72FFF70CF818F0080F07D0204653
-:103D5000FCF798FA06EB45130822C3F8082B18F075
-:103D6000100F04D006EB45131022C3F8082B0135C1
-:103D70007F08002FA9D100E000252068FEF7A0FFF2
-:103D800010F4802F6BD02068FEF7A6FF07460025B1
-:103D900063E017F0010F5ED05FFA85F920684946AD
-:103DA000FEF7ACFF804610F0010F2DD0012202FA81
-:103DB00005F0D6F8343823EA0003C6F8343806EBA9
-:103DC0004513C3F808292369934209D1EB005B1B13
-:103DD0009B00234403F13802D96B9B6B0B44536067
-:103DE00020464946FCF764FA2369012B0CD15DB9E2
-:103DF000C5EBC5039B0023445B6C2BB920680121F4
-:103E000004F55F72FEF7ACFF18F0080F04D006EB64
-:103E100045130822C3F8082918F0100F04D006EB48
-:103E200045131022C3F8082918F0400F04D006EB00
-:103E300045134022C3F8082918F0020F04D006EBFE
-:103E400045130222C3F8082918F0800F03D020463A
-:103E50002946FFF737FE01357F08002F99D12068EA
-:103E6000FEF72EFF00280CDAD6F8043823F0010301
-:103E7000C6F804382046FCF74BFA23684FF000429E
-:103E80005A612068FEF71CFF10F4006F0BD0D6F8C3
-:103E9000083813F0010F02D02046FCF72BFA2368F4
-:103EA0004FF400625A612068FEF70AFF10F4805F49
-:103EB0004ED0374606F50068D8F8043023F00103E9
-:103EC000C8F8043020680021FEF704FB002207E058
-:103ED00007EB4213FF21C3F80819C3F8081B01328E
-:103EE00063689342F4D84FF0FF33C8F81830D8F81D
-:103EF0001C3043F00113C8F81C30A36A63B1D8F832
-:103F0000843043F00B03C8F88430D8F8443043F0D1
-:103F10000B03C8F844300BE0D8F8143043F00B031F
-:103F2000C8F81430D8F8103043F00B03C8F810303C
-:103F3000D6F8003823F4FE63C6F800382068217CE8
-:103F400004F55F72FEF70CFF23684FF480525A614C
-:103F50002068FEF7B5FE10F4005F26D02068FEF75B
-:103F6000E3FE2268D36823F47053D3602068FEF721
-:103F70007DFB50B90023E3604FF400736361226856
-:103F8000D36843F41053D36008E00323E360402375
-:103F900063612268D36843F4A053D3602046FCF7E2
-:103FA00099F923684FF400525A612068FEF788FEA1
-:103FB00010F0100F42D02268936923F01003936130
-:103FC000376A07F00F08C7F34343022B1CD147F6AB
-:103FD000F0731F402DD03F094FEAC809C8EB090A0A
-:103FE0004FEA8A0AA2443046DAF8E0113A46FEF770
-:103FF000CDFDDAF8E0313B44CAF8E031DAF8EC31D3
-:104000001F44CAF8EC7114E0062B12D1304604F5B7
-:104010005F710822FEF7BAFDC7F30A174FEAC8031B
-:10402000C8EB030292002244D2F8EC313B44C2F8C0
-:10403000EC312268936943F0100393612068FEF726
-:104040003FFE10F0080F05D02046FCF73DF923682D
-:1040500008225A612068FEF733FE10F4801F07D053
-:104060002046E9B2FCF768F923684FF480125A61E0
-:104070002068FEF725FE10F4001F07D02046E9B2A5
-:10408000FCF754F923684FF400125A612068FEF7D8
-:1040900017FE10F0804F06D02046FCF753F9236836
-:1040A0004FF080425A612068FEF70AFE10F0040FBC
-:1040B0000BD023685D6815F0040F02D02046FCF792
-:1040C00047F923685A6815435D60BDE8F88F00BF63
-:1040D00090F87833012B0BD010B50446012380F8FB
-:1040E00078330068FEF7C4FD002084F8780310BD23
-:1040F0000220704738B50546C8B210F0800F07D0CF
-:1041000001F07F04C4EBC404A40030342C4407E065
-:1041100001F07F04C4EBC404A4002C4404F5EA7449
-:1041200001F07F012170C0096070A260E37000B1EE
-:10413000E180022B01D10023237195F87833012B04
-:104140000AD0012385F8783328682146FEF7AEFAB5
-:10415000002085F8780338BD022038BD10B504462C
-:10416000CAB212F0800F07D001F07F03C3EBC30384
-:104170009B003033034407E001F07F03C3EBC3032C
-:104180009B00034403F5EA7301F07F011970D20923
-:104190005A7094F87823012A0AD0012284F87823EF
-:1041A00020681946FEF7C8FA002084F8780310BD8D
-:1041B000022010BD70B501F07F06F400A51BAD0014
-:1041C000054405F5EA712C46C5F8E021C5F8E8314B
-:1041D0000023C4F8EC3184F8D53184F8D461036944
-:1041E000012B05D1C6EBC604A4000444C4F8E421A5
-:1041F00090F87823012A11D00446012280F8782310
-:1042000026B90068DAB2FEF7D5FA03E00068DAB240
-:10421000FEF790FB002084F8780370BD022070BD8B
-:1042200001F07F01C1EBC10189000844B0F8EC0145
-:10423000704700BF70B501F07F06F400A51BAD000C
-:1042400030354119A41BA4000444E26363640023D5
-:10425000A364012384F8313084F830600369012BB2
-:1042600004D1C6EBC604A4000444226490F8782369
-:10427000012A11D00446012280F8782326B900686B
-:10428000DAB2FEF797FA03E00068DAB2FEF752FB03
-:10429000002084F8780370BD022070BD38B5044654
-:1042A000CAB212F0800F07D001F07F03C3EBC30343
-:1042B0009B003033034405E0C1EBC1039B00034482
-:1042C00003F5EA730120987001F07F051D70D20993
-:1042D0005A7094F87823824210D084F878032068CA
-:1042E0001946FEF769FC2DB92068217C04F55F7240
-:1042F000FEF736FD002084F8780338BD022038BD73
-:1043000010B50446CAB212F0800F07D001F07F0347
-:10431000C3EBC3039B003033034405E0C1EBC1038F
-:104320009B00034403F5EA730020987001F07F01BD
-:104330001970D2095A7094F87823012A0AD0012200
-:1043400084F8782320681946FEF762FC002084F880
-:10435000780310BD022010BD90F87833012B14D0E3
-:1043600010B50446012380F8783311F0800F05D092
-:10437000006801F07F01FEF7ADF802E00068FEF78B
-:10438000BBF8002084F8780310BD0220704700BFFE
-:104390002DE9F0410023D3E09C4601229A400C68AD
-:1043A0001440944240F0CB804D68022D01D0122D74
-:1043B00014D14FEAD30808F1080850F8287003F028
-:1043C000070E4FEA8E0E0F2505FA0EF527EA0506B1
-:1043D0000D6905FA0EF5354340F8285006684FEA96
-:1043E000430E032505FA0EF5ED4305EA06074E6870
-:1043F00006F0030606FA0EF63E4306604E68771E88
-:10440000012F03D9112E01D0122E12D1866805EA90
-:104410000607CE6806FA0EF63E438660476827EA2E
-:1044200002074E68C6F3001202FA0CF646EA0702CB
-:104430004260C2682A408D6805FA0EF51543C560D2
-:104440004A6812F0805F7AD0404D6A6C42F4804234
-:104450006A649A08961CA5F5803555F8266003F025
-:104460000307BF000F25BD4026EA0506384DA842C8
-:1044700031D005F58065A8422BD005F58065A842AE
-:1044800025D005F58065A8421FD005F58065A842B6
-:1044900019D005F58065A84213D005F58065A842BE
-:1044A0000DD005F58065A84207D005F58065A842C6
-:1044B00001D1082510E009250EE007250CE00625AE
-:1044C0000AE0052508E0042506E0032504E00225AE
-:1044D00002E0012500E00025BD40354302321D4EBB
-:1044E00046F822501C4A1568E24302EA05064F6866
-:1044F00017F4803F01D044EA0506174D2E606D6821
-:1045000002EA05064F6817F4003F01D044EA0506A9
-:10451000114D6E60AD6802EA05064F6817F4801F02
-:1045200001D044EA05060C4DAE60ED682A404E68A5
-:1045300016F4001F01D044EA0502074CE260013383
-:104540000F2B7FF629AFBDE8F08100BF0038024095
-:104550000000024000380140003C014030B40568D2
-:104560002C6824F480242C60046863608368402BEA
-:1045700004D103689A600368D96003E00368996016
-:104580000368DA6030BC7047002833D010B40346AB
-:10459000022280F8352004682168194A0A404068E0
-:1045A00099680843D9680843196908435969084359
-:1045B00099690843D9690843196A01430A43596A4A
-:1045C000042903D1D86A196B01430A432260196890
-:1045D0004A6922F00702586A0243042801D1986A06
-:1045E00002434A610020D864012283F8352083F811
-:1045F000340001E0012070475DF8044B704700BFB4
-:104600003F8010F038B590F83440012C2ED004468D
-:10461000012084F83400022084F8350025682868D9
-:1046200020F0010028602046FFF798FF22681368F9
-:1046300043F0100313602268136843F0080313600B
-:104640002268136843F0040313602268536943F03F
-:10465000800353612268136843F0020313602268E9
-:10466000136843F001031360002038BD022038BDF9
-:1046700010B504460368B24A934257D9583A526873
-:10468000B0498B424CD001F580618B4246D0A1F5F8
-:1046900068718B4240D001F580618B423AD0A1F520
-:1046A00089618B4233D001F580618B422CD0A1F51A
-:1046B00068718B4225D001F580618B421ED0A1F537
-:1046C00089618B4217D001F580618B4210D0A1F532
-:1046D00068718B4209D001F580618B4202D14FF4A1
-:1046E00000211EE04FF000711BE04FF4002118E0A4
-:1046F0004FF4002115E04FF4002112E04FF4007157
-:104700000FE04FF400710CE04FF4007109E04FF43A
-:10471000007106E0082104E0082102E0082100E021
-:1047200008210A4214BF0122002218E1864A93425E
-:1047300058D902F55272126882498B424CD001F569
-:1047400080618B4246D0A1F568718B4240D001F563
-:1047500080618B423AD0A1F589618B4233D001F55B
-:1047600080618B422CD0A1F568718B4225D001F578
-:1047700080618B421ED0A1F589618B4217D001F573
-:1047800080618B4210D0A1F568718B4209D001F590
-:1047900080618B4202D14FF400211EE04FF0007186
-:1047A0001BE04FF4002118E04FF4002115E04FF416
-:1047B000002112E04FF400710FE04FF400710CE0A3
-:1047C0004FF4007109E04FF4007106E0082104E0A5
-:1047D000082102E0082100E008210A4214BF01225A
-:1047E0000022BCE0594A934257D9583A5268554979
-:1047F0008B424CD001F580618B4246D0A1F56871A7
-:104800008B4240D001F580618B423AD0A1F589619D
-:104810008B4233D001F580618B422CD0A1F56871B9
-:104820008B4225D001F580618B421ED0A1F58961B4
-:104830008B4217D001F580618B4210D0A1F56871D1
-:104840008B4209D001F580618B4202D14FF40021E7
-:104850001EE04FF000711BE04FF4002118E04FF410
-:10486000002115E04FF4002112E04FF400710FE039
-:104870004FF400710CE04FF4007109E04FF4007147
-:1048800006E0082104E0082102E0082100E00821F8
-:104890000A4214BF0122002261E02D4A1268294910
-:1048A0008B4257D001F580618B4246D0A1F56871EB
-:1048B0008B4240D001F580618B423AD0A1F58961ED
-:1048C0008B4233D001F580618B422CD0A1F5687109
-:1048D0008B4225D001F580618B421ED0A1F5896104
-:1048E0008B4217D001F580618B4210D0A1F5687121
-:1048F0008B4209D001F580618B4202D14FF4002137
-:1049000029E04FF0007126E04FF4002123E04FF43E
-:10491000002120E04FF400211DE04FF400711AE067
-:104920004FF4007117E04FF4007114E04FF4007180
-:1049300011E008210FE008210DE008210BE000BF85
-:104940005864024010600240B86002405860024063
-:104950000060024008210A4214BF01220022002AFE
-:1049600000F07D811A6812F0040F00F078811A6857
-:1049700022F004021A602368AA4A934254D9A2F58D
-:10498000896293424CD002F58062934246D0A2F5F0
-:104990006872934240D002F5806293423AD0A2F509
-:1049A0008962934233D002F5806293422CD0A2F503
-:1049B0006872934225D002F5806293421ED0A2F520
-:1049C0008962934217D002F58062934210D0A2F51B
-:1049D0006872934209D002F58062934202D14FF48B
-:1049E00000221EE04FF000721BE04FF4002218E09E
-:1049F0004FF4002215E04FF4002212E04FF4007251
-:104A00000FE04FF400720CE04FF4007209E04FF435
-:104A1000007206E0082204E0082202E0082200E01A
-:104A20000822814BDA600CE1804A934253D9A83ABC
-:104A300093424CD002F58062934246D0A2F5687250
-:104A4000934240D002F5806293423AD0A2F5896247
-:104A5000934233D002F5806293422CD0A2F5687263
-:104A6000934225D002F5806293421ED0A2F589625E
-:104A7000934217D002F58062934210D0A2F568727B
-:104A8000934209D002F58062934202D14FF4002292
-:104A90001EE04FF000721BE04FF4002218E04FF4CC
-:104AA000002215E04FF4002212E04FF400720FE0F4
-:104AB0004FF400720CE04FF4007209E04FF4007202
-:104AC00006E0082204E0082202E0082200E00822B2
-:104AD000554B9A60B5E0564A934253D9483A9342AF
-:104AE0004CD002F58062934246D0A2F568729342A0
-:104AF00040D002F5806293423AD0A2F58962934297
-:104B000033D002F5806293422CD0A2F568729342B2
-:104B100025D002F5806293421ED0A2F589629342AD
-:104B200017D002F58062934210D0A2F568729342CA
-:104B300009D002F58062934202D14FF400221EE0B8
-:104B40004FF000721BE04FF4002218E04FF40022F7
-:104B500015E04FF4002212E04FF400720FE04FF422
-:104B600000720CE04FF4007209E04FF4007206E0AE
-:104B7000082204E0082202E0082200E008222D4B6F
-:104B8000DA605EE02C4A934258D002F5806293428C
-:104B900046D0A2F56872934240D002F580629342FB
-:104BA0003AD0A2F58962934233D002F580629342F3
-:104BB0002CD0A2F56872934225D002F58062934210
-:104BC0001ED0A2F58962934217D002F5806293420B
-:104BD00010D0A2F56872934209D002F58062934228
-:104BE00002D14FF400222AE04FF0007227E04FF488
-:104BF000002224E04FF4002221E04FF400221EE0C6
-:104C00004FF400721BE04FF4007218E04FF4007292
-:104C100015E04FF4007212E0082210E008220EE0C6
-:104C200008220CE05864024000640240B860024070
-:104C30005860024000600240106002400822B24BFF
-:104C40009A60E36C43F00103E364042384F8353095
-:104C5000002384F83430A36C0BB1204698472368B6
-:104C6000AA4A934253D9583A5268A9498B4248D02C
-:104C700001F580618B4242D0A1F568718B423CD036
-:104C800001F580618B4236D0A1F589618B4230D02D
-:104C900001F580618B422AD0A1F568718B4224D046
-:104CA00001F580618B421ED0A1F589618B4217D03E
-:104CB00001F580618B4210D0A1F568718B4209D05B
-:104CC00001F580618B4202D14FF480311AE04FF43C
-:104CD000800117E04FF4803114E04FF4803111E08F
-:104CE0004FF480310EE040210CE040210AE04021E9
-:104CF00008E0402106E0874904E0864902E0854952
-:104D000000E084490A4214BF012200220DE1824AD8
-:104D1000934254D902F5527212687D498B4248D0B1
-:104D200001F580618B4242D0A1F568718B423CD085
-:104D300001F580618B4236D0A1F589618B4230D07C
-:104D400001F580618B422AD0A1F568718B4224D095
-:104D500001F580618B421ED0A1F589618B4217D08D
-:104D600001F580618B4210D0A1F568718B4209D0AA
-:104D700001F580618B4202D14FF480311AE04FF48B
-:104D8000800117E04FF4803114E04FF4803111E0DE
-:104D90004FF480310EE040210CE040210AE0402138
-:104DA00008E0402106E05B4904E05A4902E0594925
-:104DB00000E058490A4214BF01220022B5E0574AD8
-:104DC000934253D9583A526851498B4248D001F521
-:104DD00080618B4242D0A1F568718B423CD001F5D5
-:104DE00080618B4236D0A1F589618B4230D001F5CC
-:104DF00080618B422AD0A1F568718B4224D001F5E5
-:104E000080618B421ED0A1F589618B4217D001F5DC
-:104E100080618B4210D0A1F568718B4209D001F5F9
-:104E200080618B4202D14FF480311AE04FF480014F
-:104E300017E04FF4803114E04FF4803111E04FF46B
-:104E400080310EE040210CE040210AE0402108E0E2
-:104E5000402106E02F4904E02E4902E02D4900E000
-:104E60002C490A4214BF012200225EE0264A126841
-:104E700027498B4254D001F580618B4242D0A1F585
-:104E800068718B423CD001F580618B4236D0A1F530
-:104E900089618B4230D001F580618B422AD0A1F527
-:104EA00068718B4224D001F580618B421ED0A1F540
-:104EB00089618B4217D001F580618B4210D0A1F53A
-:104EC00068718B4209D001F580618B4202D14FF4A9
-:104ED000803126E04FF4800123E04FF4803120E060
-:104EE0004FF480311DE04FF480311AE0402118E08A
-:104EF000402116E0402114E0402112E0054910E075
-:104F000004490EE003490CE000600240586402408E
-:104F10001060024001008000B8600240586002400A
-:104F2000AB490A4214BF01220022002A00F06F811F
-:104F30005A6912F0800F00F06A815A6922F08002EB
-:104F40005A612368A34A934250D9A2F589629342D9
-:104F500048D002F58062934242D0A2F56872934233
-:104F60003CD002F58062934236D0A2F5896293422A
-:104F700030D002F5806293422AD0A2F56872934243
-:104F800024D002F5806293421ED0A2F5896293423A
-:104F900017D002F58062934210D0A2F56872934256
-:104FA00009D002F58062934202D14FF480321AE0B8
-:104FB0004FF4800217E04FF4803214E04FF4803257
-:104FC00011E04FF480320EE040220CE040220AE073
-:104FD000402208E0402206E07D4A04E07C4A02E0EC
-:104FE0007B4A00E07A4A7C4BDA6002E17B4A9342DA
-:104FF0004FD9A83A934248D002F58062934242D0FA
-:10500000A2F5687293423CD002F58062934236D09A
-:10501000A2F58962934230D002F5806293422AD091
-:10502000A2F56872934224D002F5806293421ED0AA
-:10503000A2F58962934217D002F58062934210D0A4
-:10504000A2F56872934209D002F58062934202D1C0
-:105050004FF480321AE04FF4800217E04FF48032B0
-:1050600014E04FF4803211E04FF480320EE0402221
-:105070000CE040220AE0402208E0402206E0544AC8
-:1050800004E0534A02E0524A00E0514A524B9A600F
-:10509000AFE0534A93424FD9483A934248D002F581
-:1050A0008062934242D0A2F5687293423CD002F5EE
-:1050B0008062934236D0A2F58962934230D002F5E5
-:1050C000806293422AD0A2F56872934224D002F5FE
-:1050D000806293421ED0A2F58962934217D002F5F6
-:1050E0008062934210D0A2F56872934209D002F513
-:1050F0008062934202D14FF480321AE04FF4800272
-:1051000017E04FF4803214E04FF4803211E04FF496
-:1051100080320EE040220CE040220AE0402208E00B
-:10512000402206E02A4A04E0294A02E0284A00E038
-:10513000274A2C4BDA605CE02B4A934256D002F5AA
-:105140008062934242D0A2F5687293423CD002F54D
-:105150008062934236D0A2F58962934230D002F544
-:10516000806293422AD0A2F56872934224D002F55D
-:10517000806293421ED0A2F58962934217D002F555
-:105180008062934210D0A2F56872934209D002F572
-:105190008062934202D14FF4803228E04FF48002C3
-:1051A00025E04FF4803222E04FF480321FE04FF4CC
-:1051B00080321CE040221AE0402218E0402216E033
-:1051C000402214E0024A12E0014A10E0004A0EE0D8
-:1051D000010080005864024000640240B860024050
-:1051E000586002400060024010600240B44AB54B73
-:1051F0009A60E36C43F00203E364042384F83530DF
-:10520000002384F83430A36C0BB120469847236800
-:10521000AD4A934257D9583A5268AC498B424CD068
-:1052200001F580618B4246D0A1F568718B4240D078
-:1052300001F580618B423AD0A1F589618B4233D070
-:1052400001F580618B422CD0A1F568718B4225D08D
-:1052500001F580618B421ED0A1F589618B4217D088
-:1052600001F580618B4210D0A1F568718B4209D0A5
-:1052700001F580618B4202D14FF480211EE04FF096
-:1052800080711BE04FF4802118E04FF4802115E07D
-:105290004FF4802112E04FF480710FE04FF48071E1
-:1052A0000CE04FF4807109E04FF4807106E088490A
-:1052B00004E0874902E0864900E085490A4214BFBC
-:1052C000012200221BE1834A934258D902F552720F
-:1052D00012687E498B424CD001F580618B4246D0EA
-:1052E000A1F568718B4240D001F580618B423AD0C4
-:1052F000A1F589618B4233D001F580618B422CD0BE
-:10530000A1F568718B4225D001F580618B421ED0DA
-:10531000A1F589618B4217D001F580618B4210D0D5
-:10532000A1F568718B4209D001F580618B4202D1F1
-:105330004FF480211EE04FF080711BE04FF480217C
-:1053400018E04FF4802115E04FF4802112E04FF473
-:1053500080710FE04FF480710CE04FF4807109E030
-:105360004FF4807106E05A4904E0594902E0584977
-:1053700000E057490A4214BF01220022BFE0564A0A
-:10538000934257D9583A526850498B424CD001F554
-:1053900080618B4246D0A1F568718B4240D001F507
-:1053A00080618B423AD0A1F589618B4233D001F5FF
-:1053B00080618B422CD0A1F568718B4225D001F51C
-:1053C00080618B421ED0A1F589618B4217D001F517
-:1053D00080618B4210D0A1F568718B4209D001F534
-:1053E00080618B4202D14FF480211EE04FF080712A
-:1053F0001BE04FF4802118E04FF4802115E04FF4BA
-:10540000802112E04FF480710FE04FF480710CE0C6
-:105410004FF4807109E04FF4807106E02C4904E0FC
-:105420002B4902E02A4900E029490A4214BF01221F
-:10543000002264E0234A126824498B425AD001F5C5
-:1054400080618B4254D0A1F568718B424ED001F53A
-:1054500080618B4248D0A1F589618B4241D001F532
-:1054600080618B423AD0A1F568718B4225D001F55D
-:1054700080618B421ED0A1F589618B4217D001F566
-:1054800080618B4210D0A1F568718B4209D001F583
-:1054900080618B4202D14FF480212CE04FF080716B
-:1054A00029E04FF4802126E04FF4802123E04FF4DF
-:1054B000802120E04FF480711DE04FF480711AE0EC
-:1054C0000100800000600240586402401060024009
-:1054D00004008000B8600240586002404FF48071C0
-:1054E00009E04FF4807106E0B54904E0B44902E0F8
-:1054F000B34900E0B2490A4214BF01220022002A47
-:1055000000F07F811A6812F0020F00F07A811A68A9
-:1055100022F002021A602368AA4A934254D9A2F5E3
-:10552000896293424CD002F58062934246D0A2F544
-:105530006872934240D002F5806293423AD0A2F55D
-:105540008962934233D002F5806293422CD0A2F557
-:105550006872934225D002F5806293421ED0A2F574
-:105560008962934217D002F58062934210D0A2F56F
-:105570006872934209D002F58062934202D14FF4DF
-:1055800080221EE04FF080721BE04FF4802218E072
-:105590004FF4802215E04FF4802212E04FF4807225
-:1055A0000FE04FF480720CE04FF4807209E04FF48A
-:1055B000807206E0824A04E0814A02E0804A00E00C
-:1055C0007F4A814BDA600EE1804A934253D9A83A70
-:1055D00093424CD002F58062934246D0A2F56872A5
-:1055E000934240D002F5806293423AD0A2F589629C
-:1055F000934233D002F5806293422CD0A2F56872B8
-:10560000934225D002F5806293421ED0A2F58962B2
-:10561000934217D002F58062934210D0A2F56872CF
-:10562000934209D002F58062934202D14FF4802266
-:105630001EE04FF080721BE04FF4802218E04FF420
-:10564000802215E04FF4802212E04FF480720FE0C8
-:105650004FF480720CE04FF4807209E04FF48072D6
-:1056600006E0574A04E0564A02E0554A00E0544A30
-:10567000554B9A60B7E0564A934253D9483A934201
-:105680004CD002F58062934246D0A2F568729342F4
-:1056900040D002F5806293423AD0A2F589629342EB
-:1056A00033D002F5806293422CD0A2F56872934207
-:1056B00025D002F5806293421ED0A2F58962934202
-:1056C00017D002F58062934210D0A2F5687293421F
-:1056D00009D002F58062934202D14FF480221EE08D
-:1056E0004FF080721BE04FF4802218E04FF48022CC
-:1056F00015E04FF4802212E04FF480720FE04FF477
-:1057000080720CE04FF4807209E04FF4807206E082
-:105710002B4A04E02A4A02E0294A00E0284A2D4B9D
-:10572000DA6060E02C4A93425AD002F580629342DC
-:1057300054D0A2F56872934240D002F58062934241
-:105740003AD0A2F58962934233D002F58062934247
-:105750002CD0A2F56872934225D002F58062934264
-:105760001ED0A2F58962934217D002F5806293425F
-:1057700010D0A2F56872934209D002F5806293427C
-:1057800002D14FF480222CE04FF0807229E04FF4D8
-:10579000802226E04FF4802223E04FF4802220E094
-:1057A0004FF480721DE04FF480721AE04FF4807263
-:1057B00017E04FF4807214E0014A12E0004A10E052
-:1057C000040080005864024000640240B860024057
-:1057D000586002400060024010600240B84A00E099
-:1057E000B74AB84B9A60E36C43F00403E3640423C4
-:1057F00084F83530002384F83430A36C0BB1204694
-:1058000098472368B04A934257D9583A5268AF49EB
-:105810008B424CD001F580618B4246D0A1F5687176
-:105820008B4240D001F580618B423AD0A1F589616D
-:105830008B4233D001F580618B422CD0A1F5687189
-:105840008B4225D001F580618B421ED0A1F5896184
-:105850008B4217D001F580618B4210D0A1F56871A1
-:105860008B4209D001F580618B4202D14FF4801147
-:105870001EE04FF080611BE04FF4801118E04FF400
-:10588000801115E04FF4801112E04FF480610FE0B9
-:105890004FF480610CE04FF4806109E04FF48061C7
-:1058A00006E0102104E0102102E0102100E01021A8
-:1058B0000A4214BF0122002219E1854A934258D9B5
-:1058C00002F55272126881498B424CD001F5806119
-:1058D0008B4246D0A1F568718B4240D001F58061C2
-:1058E0008B423AD0A1F589618B4233D001F58061BA
-:1058F0008B422CD0A1F568718B4225D001F58061D7
-:105900008B421ED0A1F589618B4217D001F58061D1
-:105910008B4210D0A1F568718B4209D001F58061EE
-:105920008B4202D14FF480111EE04FF080611BE0EA
-:105930004FF4801118E04FF4801115E04FF48011FE
-:1059400012E04FF480610FE04FF480610CE04FF4FF
-:10595000806109E04FF4806106E0102104E010212D
-:1059600002E0102100E010210A4214BF01220022AF
-:10597000BDE0584A934257D9583A526853498B422E
-:105980004CD001F580618B4246D0A1F568718B4205
-:1059900040D001F580618B423AD0A1F589618B42FC
-:1059A00033D001F580618B422CD0A1F568718B4218
-:1059B00025D001F580618B421ED0A1F589618B4213
-:1059C00017D001F580618B4210D0A1F568718B4230
-:1059D00009D001F580618B4202D14FF480111EE0A5
-:1059E0004FF080611BE04FF4801118E04FF48011FC
-:1059F00015E04FF4801112E04FF480610FE04FF496
-:105A000080610CE04FF4806109E04FF4806106E0B2
-:105A1000102104E0102102E0102100E010210A42D0
-:105A200014BF0122002262E0264A126827498B42F5
-:105A300058D001F580618B4252D0A1F568718B423C
-:105A40004CD001F580618B4246D0A1F589618B4233
-:105A500033D001F580618B422CD0A1F568718B4267
-:105A600025D001F580618B421ED0A1F589618B4262
-:105A700017D001F580618B4210D0A1F568718B427F
-:105A800009D001F580618B4202D14FF480112AE0E8
-:105A90004FF0806127E04FF4801124E04FF4801133
-:105AA00021E04FF480111EE04FF480611BE04FF4C1
-:105AB000806118E04FF4806115E04FF4806112E0DE
-:105AC0000400800000600240586402401060024000
-:105AD000B860024058600240102104E0102102E04A
-:105AE000102100E010210A4214BF01220022002AE6
-:105AF00000F0F8821A6812F0080F00F0F3821A68BA
-:105B000012F4802F00F07881B54A934254D9A2F55F
-:105B1000896293424CD002F58062934246D0A2F54E
-:105B20006872934240D002F5806293423AD0A2F567
-:105B30008962934233D002F5806293422CD0A2F561
-:105B40006872934225D002F5806293421ED0A2F57E
-:105B50008962934217D002F58062934210D0A2F579
-:105B60006872934209D002F58062934202D14FF4E9
-:105B700080121EE04FF080621BE04FF4801218E0AC
-:105B80004FF4801215E04FF4801212E04FF480625F
-:105B90000FE04FF480620CE04FF4806209E04FF4B4
-:105BA000806206E0102204E0102202E0102200E0F1
-:105BB00010228C4BDA6000E18B4A934253D9A83A09
-:105BC00093424CD002F58062934246D0A2F56872AF
-:105BD000934240D002F5806293423AD0A2F58962A6
-:105BE000934233D002F5806293422CD0A2F56872C2
-:105BF000934225D002F5806293421ED0A2F58962BD
-:105C0000934217D002F58062934210D0A2F56872D9
-:105C1000934209D002F58062934202D14FF4801280
-:105C20001EE04FF080621BE04FF4801218E04FF44A
-:105C3000801215E04FF4801212E04FF480620FE002
-:105C40004FF480620CE04FF4806209E04FF4806210
-:105C500006E0102204E0102202E0102200E01022F0
-:105C6000604B9A60A9E0614A934253D9483A934203
-:105C70004CD002F58062934246D0A2F568729342FE
-:105C800040D002F5806293423AD0A2F589629342F5
-:105C900033D002F5806293422CD0A2F56872934211
-:105CA00025D002F5806293421ED0A2F5896293420C
-:105CB00017D002F58062934210D0A2F56872934229
-:105CC00009D002F58062934202D14FF480131EE0A6
-:105CD0004FF080631BE04FF4801318E04FF4801303
-:105CE00015E04FF4801312E04FF480630FE04FF49F
-:105CF00080630CE04FF4806309E04FF4806306E0BA
-:105D0000102304E0102302E0102300E01023384A9F
-:105D1000D36052E0374A93424CD002F580629342FE
-:105D200046D0A2F56872934240D002F58062934259
-:105D30003AD0A2F58962934233D002F58062934251
-:105D40002CD0A2F56872934225D002F5806293426E
-:105D50001ED0A2F58962934217D002F58062934269
-:105D600010D0A2F56872934209D002F58062934286
-:105D700002D14FF480131EE04FF080631BE04FF41C
-:105D8000801318E04FF4801315E04FF4801312E0F5
-:105D90004FF480630FE04FF480630CE04FF48063B6
-:105DA00009E04FF4806306E0102304E0102302E0D2
-:105DB000102300E010230E4A936023681A6812F43F
-:105DC000002F03D1312384F8353087E11B6813F4A9
-:105DD000002F00F08381412384F835307EE100BF3D
-:105DE0005864024000640240B860024058600240BB
-:105DF00000600240106002401A6812F4807F03D1F4
-:105E00001A6822F008021A602368AB4A934254D9F8
-:105E1000A2F5896293424CD002F58062934246D04B
-:105E2000A2F56872934240D002F5806293423AD064
-:105E3000A2F58962934233D002F5806293422CD05E
-:105E4000A2F56872934225D002F5806293421ED07B
-:105E5000A2F58962934217D002F58062934210D076
-:105E6000A2F56872934209D002F58062934202D192
-:105E70004FF480121EE04FF080621BE04FF480125E
-:105E800018E04FF4801215E04FF4801212E04FF446
-:105E900080620FE04FF480620CE04FF4806209E012
-:105EA0004FF4806206E0102204E0102202E010228B
-:105EB00000E01022814BDA600DE1814A934253D910
-:105EC000A83A93424CD002F58062934246D0A2F5A4
-:105ED0006872934240D002F5806293423AD0A2F5B4
-:105EE0008962934233D002F5806293422CD0A2F5AE
-:105EF0006872934225D002F5806293421ED0A2F5CB
-:105F00008962934217D002F58062934210D0A2F5C5
-:105F10006872934209D002F58062934202D14FF435
-:105F200080121EE04FF080621BE04FF4801218E0F8
-:105F30004FF4801215E04FF4801212E04FF48062AB
-:105F40000FE04FF480620CE04FF4806209E04FF400
-:105F5000806206E0102204E0102202E0102200E03D
-:105F60001022564B9A60B6E0564A934253D9483AAB
-:105F700093424CD002F58062934246D0A2F56872FB
-:105F8000934240D002F5806293423AD0A2F58962F2
-:105F9000934233D002F5806293422CD0A2F568720E
-:105FA000934225D002F5806293421ED0A2F5896209
-:105FB000934217D002F58062934210D0A2F5687226
-:105FC000934209D002F58062934202D14FF48013CC
-:105FD0001EE04FF080631BE04FF4801318E04FF495
-:105FE000801315E04FF4801312E04FF480630FE04C
-:105FF0004FF480630CE04FF4806309E04FF480635A
-:1060000006E0102304E0102302E0102300E0102338
-:106010002D4AD3605FE02D4A934259D002F5806249
-:10602000934246D0A2F56872934240D002F5806256
-:1060300093423AD0A2F58962934233D002F580624E
-:1060400093422CD0A2F56872934225D002F580626B
-:1060500093421ED0A2F58962934217D002F5806266
-:10606000934210D0A2F56872934209D002F5806283
-:10607000934202D14FF480132BE04FF0806328E06D
-:106080004FF4801325E04FF4801322E04FF4801387
-:106090001FE04FF480631CE04FF4806319E04FF47D
-:1060A000806316E04FF4806313E0102311E01023A7
-:1060B0000FE010230DE000BF58640240006402406E
-:1060C000B860024058600240006002401060024028
-:1060D0001023B74A9360312384F83530236C0BB119
-:1060E000204698472368B34A934257D9583A526892
-:1060F000B1498B424CD001F580618B4246D0A1F56D
-:1061000068718B4240D001F580618B423AD0A1F595
-:1061100089618B4233D001F580618B422CD0A1F58F
-:1061200068718B4225D001F580618B421ED0A1F5AC
-:1061300089618B4217D001F580618B4210D0A1F5A7
-:1061400068718B4209D001F580618B4202D14FF416
-:1061500000111EE04FF000611BE04FF4001118E049
-:106160004FF4001115E04FF4001112E04FF40061FC
-:106170000FE04FF400610CE04FF4006109E04FF4D0
-:10618000006106E0202104E0202102E0202100E05F
-:1061900020210A4214BF0122002218E1874A9342BB
-:1061A00058D902F55272126883498B424CD001F5DE
-:1061B00080618B4246D0A1F568718B4240D001F5D9
-:1061C00080618B423AD0A1F589618B4233D001F5D1
-:1061D00080618B422CD0A1F568718B4225D001F5EE
-:1061E00080618B421ED0A1F589618B4217D001F5E9
-:1061F00080618B4210D0A1F568718B4209D001F506
-:1062000080618B4202D14FF400111EE04FF000611B
-:106210001BE04FF4001118E04FF4001115E04FF4AB
-:10622000001112E04FF400610FE04FF400610CE048
-:106230004FF4006109E04FF4006106E0202104E022
-:10624000202102E0202100E020210A4214BF012287
-:106250000022BCE05A4A934257D9583A52685649EC
-:106260008B424CD001F580618B4246D0A1F568711C
-:106270008B4240D001F580618B423AD0A1F5896113
-:106280008B4233D001F580618B422CD0A1F568712F
-:106290008B4225D001F580618B421ED0A1F589612A
-:1062A0008B4217D001F580618B4210D0A1F5687147
-:1062B0008B4209D001F580618B4202D14FF400116D
-:1062C0001EE04FF000611BE04FF4001118E04FF4A6
-:1062D000001115E04FF4001112E04FF400610FE0DF
-:1062E0004FF400610CE04FF4006109E04FF40061ED
-:1062F00006E0202104E0202102E0202100E020210E
-:106300000A4214BF0122002261E0294A12682A4988
-:106310008B4257D001F580618B4246D0A1F5687160
-:106320008B4240D001F580618B423AD0A1F5896162
-:106330008B4233D001F580618B422CD0A1F568717E
-:106340008B4225D001F580618B421ED0A1F5896179
-:106350008B4217D001F580618B4210D0A1F5687196
-:106360008B4209D001F580618B4202D14FF40011BC
-:1063700029E04FF0006126E04FF4001123E04FF4D4
-:10638000001120E04FF400111DE04FF400611AE00D
-:106390004FF4006117E04FF4006114E04FF4006126
-:1063A00011E020210FE020210DE020210BE000BFB3
-:1063B000006002405864024010600240B860024031
-:1063C0005860024020210A4214BF01220022002A04
-:1063D00000F0F6821A6812F0100F00F0F1821A68CD
-:1063E00012F4802F00F07E81B84A934254D9A2F56E
-:1063F000896293424CD002F58062934246D0A2F566
-:106400006872934240D002F5806293423AD0A2F57E
-:106410008962934233D002F5806293422CD0A2F578
-:106420006872934225D002F5806293421ED0A2F595
-:106430008962934217D002F58062934210D0A2F590
-:106440006872934209D002F58062934202D14FF400
-:1064500000121EE04FF000621BE04FF4001218E043
-:106460004FF4001215E04FF4001212E04FF40062F6
-:106470000FE04FF400620CE04FF4006209E04FF4CB
-:10648000006206E0202204E0202202E0202200E058
-:1064900020228F4BDA6000E18E4A934253D9A83A0A
-:1064A00093424CD002F58062934246D0A2F56872C6
-:1064B000934240D002F5806293423AD0A2F58962BD
-:1064C000934233D002F5806293422CD0A2F56872D9
-:1064D000934225D002F5806293421ED0A2F58962D4
-:1064E000934217D002F58062934210D0A2F56872F1
-:1064F000934209D002F58062934202D14FF4001218
-:106500001EE04FF000621BE04FF4001218E04FF461
-:10651000001215E04FF4001212E04FF400620FE099
-:106520004FF400620CE04FF4006209E04FF40062A7
-:1065300006E0202204E0202202E0202200E02022C7
-:10654000634B9A60A9E0644A934253D9483A934214
-:106550004CD002F58062934246D0A2F56872934215
-:1065600040D002F5806293423AD0A2F5896293420C
-:1065700033D002F5806293422CD0A2F56872934228
-:1065800025D002F5806293421ED0A2F58962934223
-:1065900017D002F58062934210D0A2F56872934240
-:1065A00009D002F58062934202D14FF400131EE03D
-:1065B0004FF000631BE04FF4001318E04FF400139A
-:1065C00015E04FF4001312E04FF400630FE04FF4B6
-:1065D00000630CE04FF4006309E04FF4006306E051
-:1065E000202304E0202302E0202300E020233B4A74
-:1065F000D36052E03A4A93424CD002F58062934213
-:1066000046D0A2F56872934240D002F58062934270
-:106610003AD0A2F58962934233D002F58062934268
-:106620002CD0A2F56872934225D002F58062934285
-:106630001ED0A2F58962934217D002F58062934280
-:1066400010D0A2F56872934209D002F5806293429D
-:1066500002D14FF400131EE04FF000631BE04FF433
-:10666000001318E04FF4001315E04FF4001312E08C
-:106670004FF400630FE04FF400630CE04FF400634D
-:1066800009E04FF4006306E0202304E0202302E049
-:10669000202300E02023114A936023681A6812F433
-:1066A000002F06D1636C002B00F08A8120469847AA
-:1066B00010BD1B6813F4002F00F08281E36B002BE8
-:1066C00000F07E812046984710BD00BF586402400C
-:1066D00000640240B860024058600240006002401E
-:1066E000106002401A6812F4807F03D11A6822F009
-:1066F00010021A602368B34A934254D9A2F5896202
-:1067000093424CD002F58062934246D0A2F5687263
-:10671000934240D002F5806293423AD0A2F589625A
-:10672000934233D002F5806293422CD0A2F5687276
-:10673000934225D002F5806293421ED0A2F5896271
-:10674000934217D002F58062934210D0A2F568728E
-:10675000934209D002F58062934202D14FF40012B5
-:106760001EE04FF000621BE04FF4001218E04FF4FF
-:10677000001215E04FF4001212E04FF400620FE037
-:106780004FF400620CE04FF4006209E04FF4006245
-:1067900006E0202204E0202202E0202200E0202265
-:1067A000894BDA6000E1894A934253D9A83A93426F
-:1067B0004CD002F58062934246D0A2F568729342B3
-:1067C00040D002F5806293423AD0A2F589629342AA
-:1067D00033D002F5806293422CD0A2F568729342C6
-:1067E00025D002F5806293421ED0A2F589629342C1
-:1067F00017D002F58062934210D0A2F568729342DE
-:1068000009D002F58062934202D14FF400121EE0DB
-:106810004FF000621BE04FF4001218E04FF400123A
-:1068200015E04FF4001212E04FF400620FE04FF455
-:1068300000620CE04FF4006209E04FF4006206E0F1
-:10684000202204E0202202E0202200E020225E4BF1
-:106850009A60A9E05E4A934253D9483A93424CD099
-:1068600002F58062934246D0A2F56872934240D00E
-:1068700002F5806293423AD0A2F58962934233D006
-:1068800002F5806293422CD0A2F56872934225D023
-:1068900002F5806293421ED0A2F58962934217D01E
-:1068A00002F58062934210D0A2F56872934209D03B
-:1068B00002F58062934202D14FF400131EE04FF0C4
-:1068C00000631BE04FF4001318E04FF4001315E0D1
-:1068D0004FF4001312E04FF400630FE04FF4006335
-:1068E0000CE04FF4006309E04FF4006306E020235E
-:1068F00004E0202302E0202300E02023354AD36077
-:1069000052E0354A93424CD002F58062934246D021
-:10691000A2F56872934240D002F5806293423AD069
-:10692000A2F58962934233D002F5806293422CD063
-:10693000A2F56872934225D002F5806293421ED080
-:10694000A2F58962934217D002F58062934210D07B
-:10695000A2F56872934209D002F58062934202D197
-:106960004FF400131EE04FF000631BE04FF40013E0
-:1069700018E04FF4001315E04FF4001312E04FF449
-:1069800000630FE04FF400630CE04FF4006309E094
-:106990004FF4006306E0202304E0202302E02023DC
-:1069A00000E020230B4A9360E36CE364112384F836
-:1069B0003530002384F83430E36B0BB12046984720
-:1069C00010BD00BF5864024000640240B86002403D
-:1069D00058600240006002401060024000F0070072
-:1069E000064AD36823F4E0631B041B0C43EA00202F
-:1069F00040F0BF6040F40030D060704700ED00E030
-:106A000030B4164BDC68C4F30224C4F10705042D2E
-:106A100028BF0425231D062B01D9033C00E00024D8
-:106A2000012303FA05F5013D2940A140A340013BA4
-:106A30001A400A43002806DA00F00F001201D2B211
-:106A4000074B1A5407E01201D2B200F1604000F582
-:106A5000614080F8002330BC704700BF00ED00E0CB
-:106A600014ED00E0410900F01F0001238340024AB9
-:106A700042F82130704700BF00E100E00138B0F17A
-:106A8000807F06D2044B58600020986007221A606D
-:106A900070470120704700BF10E000E008B5FCF728
-:106AA000CDFF044BA3FB00308009FFF7E7FF002078
-:106AB00008BD00BFD34D621008B50B4B1A6842F4F5
-:106AC00000721A601A6842F480621A601A6842F40E
-:106AD00080721A600320FFF781FF0020FFF7DEFFBE
-:106AE000F9F7DCFD002008BD003C0240024A1368B3
-:106AF00001331360704700BF4C010020014B186840
-:106B0000704700BF4C01002010B582B00190FFF724
-:106B1000F5FF0446FFF7F2FF001B019B9842F9D3F3
-:106B200002B010BD0C4B1A6842F001021A6000213D
-:106B300099601A6822F0847222F480321A60074A3F
-:106B40005A601A6822F480221A60D9604FF00062FD
-:106B5000034B9A60704700BF003802401030002499
-:106B600000ED00E0DFF830D0002103E00B4B5B5874
-:106B7000435004310A480B4B42189A42F6D30A4A52
-:106B800002E0002342F8043B084B9A42F9D3FFF796
-:106B9000C9FFF9F731FD704700C00120E66D00081C
-:106BA000000000204401002048010020A00E002029
-:106BB000FEE70000024B0146186800F04FB800BF26
-:106BC00040010020024B0146186800F003B800BFE6
-:106BD0004001002030B500293CD051F8042C0B1F97
-:106BE0001D49002AB8BF9B180A680C4612B95A60A2
-:106BF0000B6030BD93420DD219685818904201BF06
-:106C00005A5852181A60426823605A6030BD99423F
-:106C100003D80A4651680029F9D1146815199D4214
-:106C20000AD11B682344D0188842136012D1086827
-:106C3000034413604B680CE002D90C23036030BDA1
-:106C40001C681819884201BF086849680019186053
-:106C50005960536030BD00BF5401002070B5CC1C9A
-:106C600024F0030408340C2C38BF0C24002C0646F6
-:106C700003DA0C233360002070BD8C42F9D3204A24
-:106C8000136810461946A1B10A68121B0ED40B2ACC
-:106C900003D90A608B188C501FE08B420BBF5A68D7
-:106CA0004A6802605A6018BF0B4616E00B464968F6
-:106CB000E9E7144D2B681BB9304600F025F8286031
-:106CC0003046214600F020F8421C0346D1D0C51CB6
-:106CD00025F0030585420AD11C6003F10B001A1D43
-:106CE00020F00700821A0AD05142995070BD3046F8
-:106CF000E91A00F009F80130BBD02B46ECE770BD73
-:106D0000540100205001002038B5064C00230546F0
-:106D10000846236000F008F8431C02D1236803B141
-:106D20002B6038BD9C0E0020044A05491368002BD7
-:106D300008BF0B46184410601846704758010020E1
-:106D4000A00E002053544D3332204D6173732053F5
-:106D5000746F72616765000053544D6963726F65AB
-:106D60006C656374726F6E6963730000303030302D
-:106D70003030303030303141000000004D5343207E
-:106D8000436F6E66696700004D534320496E74651A
-:106D90007266616365000000008002021F0000004F
-:106DA00053544D202020202050726F64756374204E
-:106DB0002020202020202020302E30310000000311
-:106DC00000808300000600000000000000000000BA
-:106DD000000000000000000001020304010203049F
-:066DE0000607080943004C
-:106DE6008901000895010008BD010008A1010008FD
-:106DF600D9010008F501000811020008040309047E
-:106E0600120100020000004083042A57000201021A
-:106E16000301000009072000010104C03209040033
-:106E2600000208065005070581024000000705011B
-:106E3600024000000A0600020000004001000000B7
-:106E460009022000010104C0FA0904000002080634
-:106E56005005070581020002000705010200020035
-:106E6600212200087D220008A92200080000000057
-:106E760000000000A5230008B12300080000000060
-:106E86000000000000000000BD230008F1210008FA
-:106E9600FD21000809220008152200080902200029
-:106EA600010104C032090400000208065005070566
-:106EB6008102400000070501024000000024F400A2
-:106EC60000000000000000000000000000000000BC
-:106ED60000000000000000000000000000000000AC
-:106EE600E46D000800000000000000000000000043
-:106EF600000000000000000000000000000000008C
-:106F0600000000000000000000000000000000007B
-:106F1600000000000000000000000000000000006B
-:046F2600E000002067
-:0400000508006B651F
+:1000000000C00120FD7B0008497C0008497C0008F5
+:10001000497C0008497C0008497C00080000000079
+:10002000000000000000000000000000497C000803
+:10003000497C000800000000497C00089519000870
+:10004000497C0008497C0008497C0008497C00087C
+:10005000497C0008497C0008497C0008497C00086C
+:10006000497C0008B5190008497C0008497C000853
+:10007000497C0008497C0008497C0008497C00084C
+:10008000497C0008497C0008497C0008497C00083C
+:10009000497C0008497C0008497C0008497C00082C
+:1000A000497C0008497C0008497C0008497C00081C
+:1000B000497C0008497C0008497C0008497C00080C
+:1000C000497C0008497C0008497C0008C9190008DF
+:1000D000497C0008497C0008497C0008497C0008EC
+:1000E000497C0008497C0008497C0008497C0008DC
+:1000F000497C0008497C0008497C0008497C0008CC
+:10010000497C0008497C0008497C0008497C0008BB
+:10011000497C0008497C0008497C0008497C0008AB
+:10012000497C0008497C0008497C0008497C00089B
+:10013000497C00080000000000000000497C000825
+:10014000497C0008497C0008497C0008A519000882
+:10015000497C0008497C0008497C0008497C00086B
+:10016000497C0008497C0008497C0008497C00085B
+:10017000497C0008497C00080000000000000000E5
+:10018000497C0008497C000880B483B000AF034676
+:100190003960FB713B6812221A80034B18460C37FA
+:1001A000BD465DF8047B70471C00002080B483B01E
+:1001B00000AF03463960FB713B6804221A80034B91
+:1001C00018460C37BD465DF8047B704730000020B0
+:1001D00080B582B000AF03463960FB710448054921
+:1001E0003A6802F0D5F8034B18460837BD4680BD83
+:1001F000007E00087401002080B582B000AF034685
+:100200003960FB71044805493A6802F0C1F8034BB4
+:1002100018460837BD4680BD147E000874010020D2
+:1002200080B582B000AF03463960FB7104480549D0
+:100230003A6802F0ADF8034B18460837BD4680BD5A
+:10024000287E00087401002080B582B000AF03460C
+:100250003960FB71044805493A6802F099F8034B8C
+:1002600018460837BD4680BD387E0008740100205E
+:1002700080B582B000AF03463960FB710448054980
+:100280003A6802F085F8034B18460837BD4680BD32
+:10029000447E00087401002080B588B000AF78600B
+:1002A0007B681B68B3F1A04F24D1144A134B5B6BDE
+:1002B00043F080035363114A104B5B6C43F480435B
+:1002C00053644FF4C053FB6002233B6100237B6106
+:1002D0000023BB610A23FB6107F10C0308481946A0
+:1002E00007F03EF943200A21002207F09FFB43203C
+:1002F00007F0B8FB2037BD4680BD00BF0038024084
+:100300000000024080B582B000AF78607B68D3F80F
+:10031000B0237B6803F560731046194602F038F984
+:100320000837BD4680BD00BF80B582B000AF7860A1
+:100330000B46FB707B68D3F8B003FA7879681346F4
+:10034000DB009B1A9B000B4403F5F0735B68FA78A3
+:1003500011461A4602F066F90837BD4680BD00BF57
+:1003600080B582B000AF78600B46FB707B68D3F835
+:10037000B003FA7879681346DB009B1A9B000B44A4
+:1003800038339B68FA7811461A4602F0A7F9083705
+:10039000BD4680BD80B582B000AF78607B68D3F881
+:1003A000B033184602F092FA0837BD4680BD00BF50
+:1003B00080B584B000AF78600123FB737B68DB6895
+:1003C000002B02D0022B03D005E00023FB7305E0D5
+:1003D0000123FB7302E00123FB7300BF7B68D3F8AA
+:1003E000B023FB7B1046194602F038FA7B68D3F83D
+:1003F000B033184602F002FA1037BD4680BD00BF88
+:1004000080B582B000AF78607B68D3F8B03318460F
+:1004100002F034FA7B681B6803F560631A467B6858
+:100420001B6803F560631B6843F001031360083722
+:10043000BD4680BD80B582B000AF78607B681B6828
+:1004400003F560631A467B681B6803F560631B68ED
+:1004500023F0010313607B68D3F8B033184602F031
+:1004600023FA0837BD4680BD80B582B000AF786002
+:100470000B46FB707B68D3F8B023FB781046194617
+:1004800002F04CFA0837BD4680BD00BF80B582B08F
+:1004900000AF78600B46FB707B68D3F8B023FB7825
+:1004A0001046194602F02CFA0837BD4680BD00BF41
+:1004B00080B582B000AF78607B68D3F8B03318465F
+:1004C00002F03AFA0837BD4680BD00BF80B582B061
+:1004D00000AF78607B68D3F8B033184602F038FA82
+:1004E0000837BD4680BD00BF80B582B000AF7860E0
+:1004F0007B68D3F8B033184602F042FA0837BD469D
+:1005000080BD00BF80B582B000AF78607B681B788B
+:10051000002B3AD11F4A7B68C2F8B0337B681D4A72
+:10052000C3F820221B4B4FF0A0421A60194B072240
+:100530005A60184B0222DA60164B00221A61154BE2
+:1005400000225A61134B02229A61124B0022DA6197
+:10055000104B00221A620F4B00229A620D4B0022B0
+:10056000DA620C4B00221A630A4805F0EFFF0948D3
+:10057000802105F0D9FF07480021402205F086FFC1
+:1005800004480121802205F081FF00231846083726
+:10059000BD4680BD7403002080B582B000AF786096
+:1005A0007B68D3F82032184606F0D8F800231846A6
+:1005B0000837BD4680BD00BF80B582B000AF78600F
+:1005C0007B68D3F82032184606F0EAF80023184674
+:1005D0000837BD4680BD00BF80B582B000AF7860EF
+:1005E000084611461A460346FB700B46BB7013467D
+:1005F0003B807B68D3F82002F9783A88BB7806F014
+:10060000CBFC002318460837BD4680BD80B582B0BC
+:1006100000AF78600B46FB707B68D3F82022FB7834
+:100620001046194606F020FD002318460837BD463F
+:1006300080BD00BF80B582B000AF78600B46FB7014
+:100640007B68D3F82022FB781046194606F0CEFED0
+:10065000002318460837BD4680BD00BF80B582B074
+:1006600000AF78600B46FB707B68D3F82022FB78E4
+:100670001046194606F014FE002318460837BD46FA
+:1006800080BD00BF80B582B000AF78600B46FB70C4
+:100690007B68D3F82022FB781046194606F05CFEF2
+:1006A000002318460837BD4680BD00BF80B485B022
+:1006B00000AF78600B46FB707B68D3F82032FB609C
+:1006C000FB785BB2002B0BDAFB7803F07F02F96852
+:1006D0001346DB009B1A9B000B4430339B790BE0E5
+:1006E000FB7803F07F02F9681346DB009B1A9B003E
+:1006F0000B4403F5EC739B7818461437BD465DF840
+:10070000047B704780B582B000AF78600B46FB7009
+:100710007B68D3F82022FB781046194606F01AFCB5
+:10072000002318460837BD4680BD00BF80B584B0A1
+:1007300000AFF8607A601A460B46FB7213463B81A5
+:10074000FB68D3F820123B89FA7A084611467A688A
+:1007500006F04AFD002318461037BD4680BD00BF95
+:1007600080B584B000AFF8607A601A460B46FB7221
+:1007700013463B81FB68D3F820123B89FA7A08467E
+:1007800011467A6806F0BAFC002318461037BD46B9
+:1007900080BD00BF80B582B000AF78600B46FB70B3
+:1007A0007B68D3F82022FB781046194606F002FD3C
+:1007B000034618460837BD4680BD00BF80B500AF70
+:1007C00002480349002201F03DFE80BD28070020B9
+:1007D0000000002080B582B000AF00F04BF900F0BF
+:1007E000D3F938603B68002B03D1174B03221A70F2
+:1007F00026E03B6840F201129A803B6800229A7121
+:100800003B680022DA71FF237B710023FB800AE042
+:10081000FB883A6813447A791A727B7927337B71A3
+:10082000FB880133FB80FB88B3F5007FF0D3386889
+:1008300000F006FA0346002B02D1044800F08EFBBC
+:100840000837BD4680BD00BF48010020B108000840
+:1008500080B500AF074B03221A70074B1B78002BA3
+:1008600006D0054B1B78012B02D8044801F03AFE54
+:1008700080BD00BF4801002049010020280700205A
+:1008800080B500AF094B1B78032B01D101230AE08F
+:10089000064B1B78022B05D0642001F029F8FFF7E6
+:1008A000D7FFFEE70023184680BD00BF48010020A7
+:1008B00080B584B000AF78601F4B1B78022B00D945
+:1008C00037E01D4B1B78002B02D17B68002B05D134
+:1008D000642001F00DF8FFF7BBFFFEE77B689B8803
+:1008E00040F20112934205D0642001F001F8FFF7B5
+:1008F000AFFFFEE7FF237B730023FB8112E0FB8940
+:100900007A6813441B7A7A7B9A4205D0642000F0FF
+:10091000EFFFFFF79DFFFEE77B7B27337B73FB89B0
+:100920000133FB81FB89B3F5007FE8D3786800F0E1
+:1009300005F81037BD4680BD4801002080B582B063
+:1009400000AF78600B4B01221A707B6801229A80FD
+:100950007B6800229A717B680122DA71786800F066
+:100960006FF90346002B02D1034800F0F7FA08376D
+:10097000BD4680BD480100207D09000880B584B0D7
+:1009800000AF78600023FB73274B1B78022B00D944
+:1009900047E0254B1B78012B02D17B68002B05D14A
+:1009A000642000F0A5FFFFF753FFFEE77B689B88FC
+:1009B000022B05D0642000F09BFFFFF749FFFEE704
+:1009C0007B681B7A012B04D10123FB73174BBB609F
+:1009D00000BF786800F000F9FB7B002B05D1642094
+:1009E00000F086FFFFF734FFFEE7114B1B78002B6A
+:1009F0000AD00F4B1B78FA7B9A4205D0642000F096
+:100A000077FFFFF725FFFEE7074B02221A70084A1F
+:100A1000FB7B13700748B96801F03EFD054801F003
+:100A200055FD1037BD4680BD480100203400002030
+:100A3000490100202807002080B500AF0A4B1B7831
+:100A4000002B03D0084B1B78012B05D9642000F044
+:100A50004FFFFFF7FDFEFEE7044801F043FD0448A9
+:100A600000F056F880BD00BF490100202807002093
+:100A70003D09000880B500AF1F4B00221A701F4BC4
+:100A800000221A701E4B1F4A1A601D4B002283F869
+:100A900051201B4B4FF482725A60194B00229A600E
+:100AA000174B4FF40062DA60154B00221A61144BA9
+:100AB00000225A61124B4FF400729A61104B2022AF
+:100AC000DA610F4B00221A620D4B00225A620C4B66
+:100AD0004FF400529A620A4B0722DA62084804F087
+:100AE000F3FC094B1B6903F00803002B02D1074BF1
+:100AF00001221A7080BD00BF600B00205409002045
+:100B00006C0D002000300140000002405C0100201C
+:100B100080B582B000AF7860174B1B78082B01D9E5
+:100B2000012325E0154B1B68002B05D0642000F045
+:100B3000DFFEFFF78DFEFEE7114B1B78002B07D180
+:100B40000F4B01221A707B680D48984700230FE075
+:100B50000C4B1B78002B07D10A4B01221A707B68C3
+:100B600008489847002303E0044A7B681360002389
+:100B700018460837BD4680BD5001002054010020B2
+:100B8000600B00205409002080B500AF0F4B1B788C
+:100B9000082B01D9002317E00D4B1B78002B04D143
+:100BA0000B4B01221A700A4B0EE00A4B1B78002BEC
+:100BB00004D1084B01221A70064B05E0642000F0B6
+:100BC00097FEFFF745FEFEE7184680BD5001002066
+:100BD000600B00205409002080B584B000AF78601D
+:100BE000134B1B78082B00D91EE07B68114A9342F7
+:100BF00009D07B68104A934205D0642000F078FE4B
+:100C0000FFF726FEFEE70D4B1B68002B09D00B4BB0
+:100C10001B68FB60094B00221A60FB6878689847E4
+:100C200002E07B6800221A701037BD4680BD00BF0D
+:100C300050010020600B00205409002054010020C6
+:100C400080B582B000AF7860314B1B78082B01D99A
+:100C5000012358E07B682F4A934209D07B682E4AD3
+:100C6000934205D0642000F043FEFFF7F1FDFEE75C
+:100C70007B681B78012B08D17B689B88002B04D0F4
+:100C80007B689B88B3F5817F05D3642000F030FE3C
+:100C9000FFF7DEFDFEE7214B1B68002B05D064202B
+:100CA00000F026FEFFF7D4FDFEE7194B1B78002B62
+:100CB00007D0002B20DB042B1EDC184A7B68136056
+:100CC00020E0134B01221A70154A7B681360144B05
+:100CD0001B689A79134B1A70114B1B68DA79124B07
+:100CE0001A70124B1B78002B05D0104B00221A7083
+:100CF00000F0BEF906E005E0642000F0F9FDFFF722
+:100D0000A7FDFEE7002318460837BD4680BD00BF9B
+:100D100050010020600B0020540900204C010020ED
+:100D20005C0B0020680D0020500900205C010020B1
+:100D300080B485B000AF7860064B01221A70A02302
+:100D4000FB60FB6883F311881437BD465DF8047BB4
+:100D5000704700BF5D01002080B582B000AF094B35
+:100D60001B78002B00D109E0064B00221A7000F01E
+:100D70000BF800237B607B6883F311880837BD463E
+:100D800080BD00BF5D01002080B582B000AF6A4B1E
+:100D900010229A61694B1B78082B00D9C8E0674B79
+:100DA0001B78022B0DD1654B03221A70644B1B7804
+:100DB000002B05D0624B00221A7000F07FF9B7E0DB
+:100DC000B6E05E4B1B78042B3FD15E4B1B68002BBB
+:100DD00009D05D4B1B68002B05D1642000F088FD15
+:100DE000FFF736FDFEE7594B1B687B60564B1B68CF
+:100DF000002B1DD0514B01221A70534B1B68534AD4
+:100E00001360514B00221A60504B1B689A79504B6B
+:100E10001A704E4B1B68DA794E4B1A70484B1B7890
+:100E2000002B0ED0464B00221A7000F021F908E08A
+:100E3000424B00221A70484B1B68002B01D000F077
+:100E4000AFF87868FFF7C8FE72E03C4B1B78062BC2
+:100E50001ED13E4B1B689B88002B05D03B4B1B686B
+:100E60009B88B3F5817F05D3642000F041FDFFF737
+:100E7000EFFCFEE7314B07221A70314B1B78002B39
+:100E800005D02F4B00221A7000F088F950E04FE097
+:100E90002A4B1B78082B45D1284B00221A702E4B69
+:100EA0001B68002B05D1642000F022FDFFF7D0FC69
+:100EB000FEE7264B1B689B79022B0FD1234B1B6847
+:100EC000DB79012B0AD1214B1B681846FFF784FE02
+:100ED000214B00221A60FFF7AFFD29E01B4B1B6876
+:100EE0009B791A461A4B1B78534003F07F03002B63
+:100EF00006D1164B1B68DA79164B1B789A4205D03F
+:100F0000642000F0F5FCFFF7A3FCFEE7124B1B6822
+:100F10003B60114B00221A600C4B1A683B6810466C
+:100F2000984705E0642000F0E3FCFFF791FCFEE742
+:100F30000837BD4680BD00BF0000024050010020C0
+:100F40005C010020540100204C0100205C0B0020BB
+:100F5000680D0020500900205801002080B582B0A3
+:100F600000AF78600C4B1B78082B01D901230FE0F0
+:100F70000A4B1B68002B05D0642000F0B9FCFFF77A
+:100F800067FCFEE7054A7B68136000F009F803463A
+:100F900018460837BD4680BD50010020580100208A
+:100FA00080B500AF114B1B78082B01D901231BE042
+:100FB0000E4B1B78042B05D9642000F099FCFFF739
+:100FC00047FCFEE7094B1B78002B0CD1074B052291
+:100FD0001A70074B1B78002B05D0054B00221A70A6
+:100FE0000448FFF795FD0023184680BD50010020FE
+:100FF0005C0100201511000880B500AF194B1B786B
+:10100000082B00D92DE0174B1B78072B23D801A202
+:1010100052F823F0351000083D1000085710000862
+:101020004310000857100008491000085710000826
+:10103000511000080C4B01221A7012E000F018F851
+:101040000FE000F03BF80CE00848FFF761FD08E016
+:1010500000F0A4F805E0642000F04AFCFFF7F8FB7C
+:10106000FEE780BD500100205C0100201511000842
+:1010700080B500AF0C4B02221A700C4B4FF480125B
+:101080009A610B4B1B6804330A4819460A4A02232B
+:1010900004F080FA0346002B05D0642000F028FC01
+:1010A000FFF7D6FBFEE780BD5001002000000240A4
+:1010B0005C0B00206C0D00204C09002080B500AFB7
+:1010C000104B04221A70104B4FF480129A610F4B90
+:1010D0001B68991D0D4B1B689A1D0C4B1B689B8848
+:1010E000022B38BF02239BB2094804F053FA03468F
+:1010F000002B05D0642000F0FBFBFFF7A9FBFEE707
+:1011000080BD00BF50010020000002405C0B0020A9
+:101110006C0D002080B582B000AF78601A4B1B7850
+:10112000082B00D92CE0184B1B78052B05D0642028
+:1011300000F0DEFBFFF78CFBFEE7134B06221A7074
+:10114000124A7B681360114B1B6800229A80104B77
+:101150004FF480129A610F4B00221A600B4B1B68F0
+:1011600004330D480B491A46022304F013FA0346D0
+:10117000002B05D0642000F0BBFBFFF769FBFEE706
+:101180000837BD4680BD00BF500100205C0B002029
+:10119000000002404C0900206C0D002080B500AF1B
+:1011A000104B08221A70104B4FF480129A610F4BAB
+:1011B0001B68991D0D4B1B689A1D0C4B1B689B8867
+:1011C000022B38BF02239BB2094804F0E3F903461F
+:1011D000002B05D0642000F08BFBFFF739FBFEE706
+:1011E00080BD00BF50010020000002405C0B0020C9
+:1011F0006C0D002080B582B000AF7860064B1B7884
+:10120000082B00D905E0642000F072FBFFF720FBFB
+:10121000FEE70837BD4680BD5001002080B582B092
+:1012200000AF7860FFF72CFB0346002B01D00123B1
+:1012300006E0054A7B6813600448FFF769FC034633
+:1012400018460837BD4680BDE40D00205112000845
+:1012500080B582B000AF78607B6801229A807B689D
+:1012600001229A717B680022DA717868FFF7E8FC46
+:101270000346002B0ED17868FFF7AEFC0A48FFF753
+:101280006DFE0346002B04D0084B1B6801209847D5
+:1012900007E006E07868FFF79FFC044B1B6801201D
+:1012A00098470837BD4680BDB1120008E40D002004
+:1012B00080B582B000AF7860FFF7E2FA0346002BFA
+:1012C00000D01EE07B68002B04D10F4B1B6801206F
+:1012D000984716E07B689B88022B03D17B681B7ABA
+:1012E000002B07D07868FFF777FC074B1B680120BD
+:1012F000984706E07868FFF76FFC034B1B680020F7
+:1013000098470837BD4680BDE40D002080B584B005
+:1013100000AF7860FFF7B4FA0346002B01D0012339
+:101320001FE0124A7B681360FFF72EFCF860FB6831
+:10133000002B01D1012314E0FB6801229A80FB6895
+:1013400001229A71FB680122DA71F868FFF778FCD4
+:101350000346002B04D10648FFF700FE034600E0D9
+:10136000012318461037BD4680BD00BFDC0D0020AC
+:101370007513000880B584B000AF7860FFF780FA7D
+:101380000346002B00D022E07B68002B06D1114BD6
+:101390001B68002000210022984718E07B689B888A
+:1013A000052B06D00B4B1B6800200021002298471C
+:1013B0000DE07B6808331B68FB607B680C331B689F
+:1013C000BB60044B1B687868F968BA6898471037A7
+:1013D000BD4680BDDC0D002080B586B000AFF86052
+:1013E000C7E90023FFF74CFA0346002B01D0012385
+:1013F00033E01C4B00221A601B4B00221A701B4A60
+:101400007B6A13601A4AFB681360FFF7BDFB7861C3
+:101410007B69002B01D101231FE07B6907229A80A1
+:101420007B6901229A717B690222DA717B6903F17F
+:101430000801D7E90023C1E900237B6910333A6A28
+:101440001A607869FFF7FCFB0346002B04D10948BA
+:10145000FFF784FD034600E0012318461837BD4618
+:1014600080BD00BFC80D0020D80D0020EC0D00206D
+:10147000E40D0020B112000880B582B000AF7860A2
+:10148000FFF7FEF90346002B01D0012321E0134AA8
+:101490007B681360124B1B78002B01D0002318E0EF
+:1014A0000F4B01221A700F4B1B68002B0DD00B4BFA
+:1014B0001B68002B09D00B4B1B68184600F016F870
+:1014C000084B00221A60002303E00748FFF746FD9F
+:1014D000034618460837BD4680BD00BFE80D002012
+:1014E000D80D0020C80D0020ED14000880B584B090
+:1014F00000AF7860254B00221A70FFF7C1F9034650
+:10150000002B00D03EE0224B1B68002B03D1214A68
+:101510007B68136036E07B68002B05D11C4B1B6891
+:101520000020002198472DE07B689B88013B9BB2FF
+:101530005B00FB817B689B79DBB25BB2002B08DA36
+:101540007B689B88012B04D9FA89134B1B689A424C
+:1015500005D90F4B1B6800200021984712E00E4B65
+:101560001A68FB89D31A0C4A1360094B1B68FA8965
+:10157000786811469847084B1B68002B02D0002062
+:10158000FFF77AFF1037BD4680BD00BFD80D0020A1
+:10159000E80D0020C80D0020EC0D002080B584B0BF
+:1015A00000AFF860C7E90023FFF76AF90346002B94
+:1015B00001D001230EE00949D7E90023C1E9002346
+:1015C000074ABB691360074AFB6813600648FFF7C8
+:1015D0009FFA034618461037BD4680BDD00D002047
+:1015E000E00D0020E40D0020ED15000880B582B06C
+:1015F00000AF78607B6807229A807B6801229A712D
+:101600007B680322DA717B6803F10801144BD3E98C
+:101610000023C1E900237B681033124A12681A6064
+:101620007868FFF70DFB0346002B0ED17868FFF7B3
+:10163000D3FA0D48FFF792FC0346002B04D00B4B66
+:101640001B680120984707E006E07868FFF7C4FAB6
+:10165000064B1B68012098470837BD4680BD00BF78
+:10166000D00D0020E00D002071160008E40D0020D0
+:1016700080B584B000AF7860FFF702F90346002B15
+:1016800000D026E07B68002B04D1134B1B6801209F
+:1016900098471EE07B689B88022B07D17B681B7AEA
+:1016A000002B0BD07B681B7A022B07D07868FFF7E2
+:1016B00093FA094B1B68012098470AE07B681B7A64
+:1016C000FB737868FFF788FA034B1B68FA7B1046B8
+:1016D00098471037BD4680BDE40D002080B582B02C
+:1016E00000AF78603960FFF7CBF80346002B01D0DC
+:1016F000012317E03B6803F00103002B01D0012315
+:1017000010E03B685B089BB201339AB27B689A8019
+:101710007B6881229A717B680322DA717868FFF70F
+:101720008FFA034618460837BD4680BD80B500AF26
+:1017300000F00EF806F0CCF900F056F800F0C6F80C
+:10174000FFF73CF8FFF746F8FFF706FBFCE700BFA2
+:1017500080B592B000AF224A214B1B6C43F08053FE
+:101760001364204A1F4B1B6823F4404343F4004397
+:1017700013600123BB610123FB6102233B634FF430
+:1017800080037B630823BB634FF4A873FB630423CC
+:101790003B6407237B6407F11803184604F082FAC0
+:1017A0000346002B00D0FEE70D237B600223BB60C5
+:1017B0000023FB604FF4A0533B614FF480537B61E7
+:1017C0003B1D1846022104F051FC0346002B00D0BB
+:1017D000FEE7042006F060F94837BD4680BD00BF33
+:1017E000003802400070004080B586B000AF324A39
+:1017F000314B1B6B43F0010313632F4A2E4B1B6BC2
+:1018000043F0020313632C4A2B4B1B6B43F004037E
+:101810001363294A284B1B6B43F00803136341F6FB
+:10182000FF737B600023BB600123FB6000233B61EF
+:1018300000237B613B1D2148194605F091FE4FF6C0
+:10184000E7737B603B1D1E48194605F089FE4FF685
+:10185000FF737B603B1D1B48194605F081FE3B1D55
+:101860001948194605F07CFE10237B600323BB60FA
+:101870003B1D1448194605F073FE4FF480537B60FE
+:101880000123BB600023FB603B1D0E48194605F099
+:1018900067FE0C4B4FF480529A6120237B603B1D06
+:1018A0000748194605F05CFE054B4FF400129A619B
+:1018B0001837BD4680BD00BF00380240000002401E
+:1018C0000004024000080240000C024080B500AF56
+:1018D000064B4FF080529A614FF4FA7006F04AF9C5
+:1018E000024B4FF480529A6180BD00BF0008024055
+:1018F00080B483B000AF0346FB80094AFB881380A5
+:10190000FB88002B06D1074B00221A70064B4FF4C0
+:1019100080529A610C37BD465DF8047B704700BF6A
+:101920005E010020620100200008024080B400AF88
+:10193000144B1B88002B21D0134B1B8801339AB208
+:10194000114B1A80104B1A880E4B1B889A4215D3E4
+:101950000D4B00221A800D4B1B78002B07D00B4B30
+:1019600000221A700A4B4FF480529A6106E0074B2E
+:1019700001221A70064B4FF080529A61BD465DF805
+:10198000047B70475E01002060010020620100209E
+:101990000008024080B500AF06F0D2F8FFF7C6FF9E
+:1019A00080BD00BF80B500AF014804F021FF80BDBD
+:1019B0007403002080B500AF024B08225A61FFF784
+:1019C0001BFB80BD003C014080B500AF054B2022D1
+:1019D0009A61054803F074FE024B4FF400129A61BD
+:1019E00080BD00BF000402406C0D002080B500AF38
+:1019F0004FF0FF300221002206F018F880BD00BF32
+:101A000080B588B000AF78607B681B68234A93423A
+:101A100040D1234A224B5B6C43F480535364E02350
+:101A2000FB6002233B6102237B610123BB61052331
+:101A3000FB6107F10C031B48194605F091FD194B9A
+:101A400010229A611023FB6001233B6100237B611C
+:101A500007F10C031348194605F082FD0823FB60CB
+:101A6000114B3B6101237B6107F10C030D481946C3
+:101A700005F076FD09200A21002205F0D7FF092094
+:101A800005F0F0FF23200821002205F0CFFF2320DE
+:101A900005F0E8FF2037BD4680BD00BF00300140A3
+:101AA00000380240000002400000211080B584B0E0
+:101AB00000AFF860B9601346FB80FB680222C3F8F0
+:101AC000F421FA88FB689A61FA88FB68DA61FB887E
+:101AD000F8680021BA68FEF729FE0023184610377F
+:101AE000BD4680BD80B584B000AFF860B9601346D4
+:101AF000FB80FB88F8680021BA68FEF717FE002318
+:101B000018461037BD4680BD80B584B000AFF86080
+:101B1000B9601346FB80FB88F8680021BA68FEF7BD
+:101B20001FFE002318461037BD4680BD80B582B029
+:101B300000AF78607B680422C3F8F4217868002144
+:101B400000220023FEF7F2FD002318460837BD46A9
+:101B500080BD00BF80B582B000AF78607B68052291
+:101B6000C3F8F4217868002100220023FEF7F8FD75
+:101B7000002318460837BD4680BD00BF80B584B03D
+:101B800000AF786039600023FB733B685B78092BFA
+:101B900039D801A252F823F0E91B0008FD1B000808
+:101BA000071C0008F31B0008071C0008CB1B0008DB
+:101BB000C11B0008071C0008DF1B0008D51B00081C
+:101BC0007868396800F036F922E07868396800F002
+:101BD0002DFA1DE07868396800F066FA18E0786838
+:101BE000396800F0EBFA13E07868396800F018FB08
+:101BF0000EE07868396800F03DFB09E078683968E4
+:101C000000F052FB04E07868396800F0B1FB00BFD7
+:101C1000FB7B18461037BD4680BD00BF80B584B041
+:101C200000AF786039600023FB737B6893F8FC3168
+:101C3000032B1CD13B689B88DBB2012B11D87B683E
+:101C4000D3F814329B687868396898473B68DB881A
+:101C5000002B0BD1FB7B002B08D17868FFF766FFC8
+:101C60000AE07868396800F083FB05E004E07868F2
+:101C7000396800F07DFB00BF002318461037BD46D1
+:101C800080BD00BF80B584B000AF786039600023AC
+:101C9000FB733B689B88BB733B681B7803F0600356
+:101CA000202B08D17B68D3F814329B687868396898
+:101CB00098470023B9E03B685B78012B39D0032BB0
+:101CC00002D0002B6AD0AFE07B6893F8FC31022B86
+:101CD00002D0032B0DD026E0BB7B002B08D0BB7BB2
+:101CE000802B05D0BB7B78681946FEF7B7FC1FE058
+:101CF0001EE03B685B88002B0AD1BB7B002B07D022
+:101D0000BB7B802B04D0BB7B78681946FEF7A6FC12
+:101D10007B68D3F814329B6878683968984778688C
+:101D2000FFF704FF04E07868396800F021FB00BF8A
+:101D30007AE07B6893F8FC31022B02D0032B0DD0A4
+:101D400026E0BB7B002B08D0BB7B802B05D0BB7B68
+:101D500078681946FEF782FC1FE01EE03B685B884E
+:101D6000002B14D1BB7B03F07F03002B0BD0BB7B7C
+:101D700078681946FEF786FC7B68D3F814329B68B6
+:101D80007868396898477868FFF7D0FE05E004E086
+:101D90007868396800F0ECFA00BF45E07B6893F89A
+:101DA000FC31022B02D0032B0CD037E0BB7B03F0BD
+:101DB0007F03002B05D0BB7B78681946FEF74EFCED
+:101DC00031E030E0BB7B5BB2002B08DABB7B03F079
+:101DD0007F0301331B017A681344043307E0BB7BA4
+:101DE00003F07F0310331B017A6813440433BB6094
+:101DF000BB7B78681946FEF759FC0346002B03D0DD
+:101E0000BB6801221A6002E0BB6800221A60BB684E
+:101E1000786819460222FFF749FE04E078683968BD
+:101E200000F0A6FA00BF00BFFB7B18461037BD4686
+:101E300080BD00BF80B584B000AF786039603B687A
+:101E40005B881B0A9BB2013B062B00F2D18001A2EA
+:101E500052F823F0711E00088B1E0008CB1E0008EC
+:101E6000F11F0008F11F00089D1F0008C31F000894
+:101E70007B68D3F810321B687A68117C07F10A027C
+:101E8000084611469847F860B7E07B681B7C002B3A
+:101E90000DD17B68D3F81432DB6A07F10A021046D1
+:101EA0009847F860FB68013302221A70A5E07B684E
+:101EB000D3F814321B6B07F10A0210469847F860FA
+:101EC000FB68013302221A7097E03B685B88DBB243
+:101ED000052B5DD801A252F823F000BFF51E0008C3
+:101EE0000F1F0008291F0008431F00085D1F00087E
+:101EF000771F00087B68D3F810325B687A68117C22
+:101F000007F10A02084611469847F86045E07B68E9
+:101F1000D3F810329B687A68117C07F10A020846F0
+:101F200011469847F86038E07B68D3F81032DB68D8
+:101F30007A68117C07F10A02084611469847F86052
+:101F40002BE07B68D3F810321B697A68117C07F1AB
+:101F50000A02084611469847F8601EE07B68D3F8ED
+:101F600010325B697A68117C07F10A020846114653
+:101F70009847F86011E07B68D3F810329B697A6863
+:101F8000117C07F10A02084611469847F86004E000
+:101F90007868396800F0ECF944E02EE07B681B7C3F
+:101FA000002B09D17B68D3F814329B6B07F10A022E
+:101FB00010469847F86020E07868396800F0D8F952
+:101FC00030E07B681B7C002B0DD17B68D3F814328A
+:101FD0005B6B07F10A0210469847F860FB68013313
+:101FE00007221A7009E07868396800F0C1F919E031
+:101FF0007868396800F0BCF914E07B89002B11D0B7
+:102000003B68DB88002B0DD03B68DA887B899342E4
+:1020100028BF13469BB27B817B897868F9681A4692
+:10202000FFF744FD1037BD4680BD00BF80B584B0CA
+:1020300000AF786039603B689B88002B2DD13B68EE
+:10204000DB88002B29D13B685B88DBB203F07F0380
+:10205000FB737B6893F8FC31032B04D178683968F3
+:1020600000F086F918E07B68FA7B83F8FE21FB7BA1
+:1020700078681946FEF746FB7868FFF757FDFB7B4B
+:10208000002B04D07B68022283F8FC2104E07B68EB
+:10209000012283F8FC2104E003E07868396800F04D
+:1020A00067F91037BD4680BD80B582B000AF78605B
+:1020B00039603B685B88DAB23F4B1A703E4B1B7845
+:1020C000012B04D97868396800F052F970E07B6818
+:1020D00093F8FC31022B02D0032B23D063E0364B64
+:1020E0001B78002B1AD0344B1B781A467B685A6039
+:1020F0007B68032283F8FC212F4B1B7878681946F4
+:1021000000F012FA0346022B04D17868396800F017
+:102110002FF94DE07868FFF709FD49E07868FFF78F
+:1021200005FD45E0244B1B78002B12D17B68022271
+:1021300083F8FC21204B1B781A467B685A601E4BA3
+:102140001B787868194600F00FFA7868FFF7EEFC04
+:1021500028E0194B1B781A467B685B689A421DD0B1
+:102160007B685B68DBB27868194600F0FDF9124BBA
+:102170001B781A467B685A600F4B1B7878681946A3
+:1021800000F0D2F90346022B04D17868396800F0D8
+:10219000EFF80DE07868FFF7C9FC03E07868FFF717
+:1021A000C5FC05E004E07868396800F0E1F800BF9C
+:1021B0000837BD4680BD00BF6301002080B582B0F6
+:1021C00000AF786039603B68DB88012B04D0786809
+:1021D000396800F0CDF81FE07B6893F8FC31022BE2
+:1021E00002D0032B0BD012E07B6800229A607B6840
+:1021F0000833786819460122FFF758FC0CE07B6829
+:102200000433786819460122FFF750FC04E078682F
+:10221000396800F0ADF800BF0837BD4680BD00BF8B
+:1022200080B582B000AF786039607B6893F8FC318C
+:10223000023B012B15D87B680122DA607B68D3F85A
+:102240000432002B05D07B68DB6843F002027B6818
+:10225000DA607B680C33786819460222FFF726FCA7
+:1022600004E07868396800F083F800BF0837BD469D
+:1022700080BD00BF80B582B000AF786039603B6838
+:102280005B88012B0DD17B680122C3F804227B6897
+:10229000D3F814329B687868396898477868FFF7F4
+:1022A00045FC0837BD4680BD80B582B000AF786080
+:1022B00039607B6893F8FC31023B012B13D83B68F3
+:1022C0005B88012B0ED17B680022C3F804227B6857
+:1022D000D3F814329B687868396898477868FFF7B4
+:1022E00025FC05E004E07868396800F041F800BF9B
+:1022F0000837BD4680BD00BF80B483B000AF7860B2
+:1023000039603B681A787B681A703B685A787B683A
+:102310005A703B6802331B789AB23B6803331B78D0
+:102320009BB21B029BB213449AB27B685A803B68F3
+:1023300004331B789AB23B6805331B789BB21B02AF
+:102340009BB213449AB27B689A803B6806331B7831
+:102350009AB23B6807331B789BB21B029BB21344B3
+:102360009AB27B68DA800C37BD465DF8047B704713
+:1023700080B582B000AF7860396078688021FEF760
+:102380006DF978680021FEF769F90837BD4680BD10
+:1023900080B586B000AFF860B9607A600023FB7545
+:1023A000FB68002B33D0F86800F034F803460133A3
+:1023B0009BB25B009AB27B681A80FB7D5A1CFA754F
+:1023C0001A46BB6813447A681288D2B21A70FB7D31
+:1023D0005A1CFA751A46BB68134403221A7012E09D
+:1023E000FB7D5A1CFA751A46BB681A44FB68591CD7
+:1023F000F9601B781370FB7D5A1CFA751A46BB688E
+:10240000134400221A70FB681B78002BE8D11837A0
+:10241000BD4680BD80B485B000AF78600023FB73FB
+:1024200005E0FB7B0133FB737B6801337B607B68DA
+:102430001B78002BF5D1FB7B18461437BD465DF8A1
+:10244000047B704780B584B000AFF860B960134674
+:10245000FB71FB68002B01D1022319E0FB6800220D
+:10246000C3F81422FB680022C3F81822BB68002BB3
+:1024700003D0FB68BA68C3F81022FB68012283F816
+:10248000FC21FB68FA791A70F868FEF73BF8002324
+:1024900018461037BD4680BD80B485B000AF786067
+:1024A00039600023FB733B68002B06D07B683A68D9
+:1024B000C3F814220023FB7301E00223FB73FB7BB0
+:1024C00018461437BD465DF8047B704780B582B06E
+:1024D00000AF78607868FEF75FF800231846083789
+:1024E000BD4680BD80B582B000AF78607B68D3F810
+:1024F00014325B687A685268D2B27868114698479D
+:102500007868FEF759F8002318460837BD4680BDA5
+:1025100080B483B000AF7860002318460C37BD4606
+:102520005DF8047B704700BF80B584B000AF786071
+:102530000B46FB700223FB737B68D3F81432002B2D
+:102540000CD07B68D3F814321B68FA78786811468F
+:1025500098470346002B01D10023FB73FB7B1846F1
+:102560001037BD4680BD00BF80B582B000AF786037
+:102570000B46FB707B68D3F814325B68FA78786896
+:1025800011469847002318460837BD4680BD00BF56
+:1025900080B582B000AF786039607B6803F5027364
+:1025A00018463968FFF7A8FE7B680122C3F8F421BA
+:1025B0007B68B3F80E321A467B68C3F8F8217B6853
+:1025C00093F8083203F01F03012B0BD0022B11D01C
+:1025D000002B17D17B6803F5027378681946FFF763
+:1025E000CDFA1AE07B6803F5027378681946FFF7A5
+:1025F00015FB12E07B6803F5027378681946FFF754
+:1026000041FB0AE07B6893F8083223F07F03DBB2DA
+:1026100078681946FEF722F800BF002318460837ED
+:10262000BD4680BD80B586B000AFF8600B467A60CD
+:10263000FB72FB7A002B38D1FB6803F582737B6158
+:10264000FB68D3F8F431032B42D17B699A687B692C
+:10265000DB689A4214D97B699A687B69DB68D21A75
+:102660007B699A607B69DA687B699B68934228BFC3
+:1026700013469BB2F86879681A46FFF745FA27E0D7
+:10268000FB68D3F814321B69002B0AD0FB6893F85F
+:10269000FC31032B05D1FB68D3F814321B69F868B1
+:1026A0009847F868FFF742FA12E0FB68D3F8143253
+:1026B0009B69002B0CD0FB6893F8FC31032B07D1EE
+:1026C000FB68D3F814329B69FA7AF8681146984788
+:1026D000002318461837BD4680BD00BF80B586B0C0
+:1026E00000AFF8600B467A60FB72FB7A002B6CD16E
+:1026F000FB6814337B61FB68D3F8F431022B57D1AC
+:102700007B699A687B69DB689A420FD97B699A6812
+:102710007B69DB68D21A7B699A607B699B689BB294
+:10272000F86879681A46FFF7DDF905E0F8680021D6
+:1027300000220023FEF714F87B695B687A69D2688F
+:10274000B3FBF2F102FB01F29B1A002B16D17B695D
+:102750005A687B69DB689A4210D37B695A68FB68C8
+:10276000D3F8F8319A4209D2F86800210022FFF725
+:10277000B9F9FB680022C3F8F82105E0F8680021E8
+:1027800000220023FDF7ECFFFB68D3F81432DB686E
+:10279000002B0AD0FB6893F8FC31032B05D1FB68B2
+:1027A000D3F81432DB68F8689847F868FFF7D2F975
+:1027B000FB6893F80032012B1AD1F868FFF7A8FEE6
+:1027C000FB68002283F8002212E0FB68D3F8143281
+:1027D0005B69002B0CD0FB6893F8FC31032B07D10D
+:1027E000FB68D3F814325B69FA7AF86811469847A7
+:1027F000002318461837BD4680BD00BF80B582B0A3
+:1028000000AF78607868002100224023FDF7E4FEE5
+:102810007B684022C3F81021786880210022402381
+:10282000FDF7DAFE7B6840221A627B68012283F89A
+:10283000FC217B68D3F81832002B09D07B68D3F8D1
+:1028400014325B687A685268D2B278681146984749
+:10285000002318460837BD4680BD00BF80B483B052
+:1028600000AF78600B46FB707B68FA781A7400231F
+:1028700018460C37BD465DF8047B704780B483B0C2
+:1028800000AF78607B6893F8FC217B6883F8FD21BA
+:102890007B68042283F8FC21002318460C37BD46D0
+:1028A0005DF8047B704700BF80B483B000AF7860F0
+:1028B0007B6893F8FD217B6883F8FC210023184690
+:1028C0000C37BD465DF8047B704700BF80B582B011
+:1028D00000AF78607B6893F8FC31032B0BD17B68E9
+:1028E000D3F81432DB69002B05D07B68D3F814329F
+:1028F000DB6978689847002318460837BD4680BDD5
+:1029000080B483B000AF78600B46FB70002318469C
+:102910000C37BD465DF8047B704700BF80B483B0C0
+:1029200000AF78600B46FB70002318460C37BD469D
+:102930005DF8047B704700BF80B483B000AF78605F
+:10294000002318460C37BD465DF8047B704700BF76
+:1029500080B582B000AF78607B68012283F8FC21EB
+:102960007B68D3F814325B687A685268D2B27868B0
+:1029700011469847002318460837BD4680BD00BF62
+:1029800080B582B000AF78607B68D3F814329B6A60
+:1029900078689847002318460837BD4680BD00BFB9
+:1029A00080B584B000AFF8607A603B600B46FB7284
+:1029B000814AFB681360814A7B681360804AFB7A16
+:1029C0001370804A3B681360FB68D3F818327E4A64
+:1029D00013607B681B785A2B00F2DE8001A252F84C
+:1029E00023F000BF512B0008992B0008992B0008F9
+:1029F000572B0008992B0008992B0008992B0008E9
+:102A0000992B0008992B0008992B0008992B000896
+:102A1000992B0008992B0008992B0008992B000886
+:102A2000992B0008992B0008992B00085D2B0008B2
+:102A3000992B0008992B0008992B0008992B000866
+:102A4000992B0008992B0008992B00086F2B000880
+:102A5000632B0008992B0008992B0008692B0008AC
+:102A6000992B0008992B0008992B0008992B000836
+:102A70007B2B0008992B0008812B0008992B00085C
+:102A8000992B0008872B0008992B00088D2B000834
+:102A9000992B0008992B0008992B0008992B000806
+:102AA000932B0008992B0008992B0008992B0008FC
+:102AB000992B0008992B0008992B0008992B0008E6
+:102AC000992B0008992B0008992B0008992B0008D6
+:102AD000992B0008992B0008992B0008992B0008C6
+:102AE000992B0008992B0008992B0008992B0008B6
+:102AF000992B0008992B0008992B0008992B0008A6
+:102B0000992B0008992B0008992B0008992B000895
+:102B1000992B0008992B0008992B0008992B000885
+:102B2000992B0008992B0008992B0008992B000875
+:102B3000992B0008992B0008992B0008992B000865
+:102B4000992B0008992B0008992B0008752B000879
+:102B500000F03CF82CE000F09DFA29E000F09AF833
+:102B600026E000F06DFB23E000F06AFB20E000F0BF
+:102B70002DFA1DE000F05CFA1AE000F089F917E088
+:102B800000F0E0F814E000F06BFB11E000F0B2FCA4
+:102B90000EE000F035FE0BE0FB7AF86819460522DE
+:102BA000202300F00FFB074B1B684FF0FF309847C6
+:102BB0001037BD4680BD00BF000E0020F40D002080
+:102BC000F80D0020FC0D0020F00D002080B500AFB6
+:102BD000134B1B68DB69002B0FD0124B1A68124B8A
+:102BE0001B78104619460522202300F0EBFA0F4B04
+:102BF0001B684FF0FF30984710E00B4B1B78002B01
+:102C000003D0012000F016F808E00948FEF706FBA3
+:102C10000346002B02D0012000F00CF880BD00BF5D
+:102C2000F00D0020000E0020F80D0020FC0D00200B
+:102C3000352C000880B582B000AF0346FB71FB79EC
+:102C4000002B13D00F4B1A680F4B1B7810461946F8
+:102C500002223A2300F0B6FA0C4B1B6805221A72C6
+:102C60000B4B1B684FF0FF30984707E0074B1B6882
+:102C700000225A81064B1B68002098470837BD4642
+:102C800080BD00BF000E0020F80D0020F00D0020D8
+:102C9000FC0D002080B584B000AFFDF775FF7860B3
+:102CA000234B1B687A681A61214B1B687A680832CB
+:102CB000DA60204B1B6801331B7803F00103002B03
+:102CC00004D01D4BFB6007237B8114E01B4BFB6092
+:102CD000FB6804331B789BB205337B81154B1B6863
+:102CE00004331B789BB27A899A4204D3114B1B6838
+:102CF00004331B787B810E4B1B687A895A810CE068
+:102D00007B89013B7B810A4B1B68DA687B89134412
+:102D10007A89F9680A4412781A707B89002BEFD1FE
+:102D2000074B1B68002098471037BD4680BD00BF89
+:102D3000F00D0020F40D0020547E0008DC7D00081A
+:102D4000FC0D002080B500AF0548FEF7DFFA034612
+:102D5000002B04D000200021002200F003F880BDE9
+:102D6000652D000880B584B000AFF860B9607A6066
+:102D7000FB68002B0FD1424B1A68424B1B78104660
+:102D8000194602223A2300F01DFA3F4B1B684FF010
+:102D9000FF30984771E03D4B1B68FA681A613B4B66
+:102DA0001B68FA680832DA60384B1B68BA689A66A2
+:102DB000364B1B687A6892B2A3F86620334B1B68C7
+:102DC000DB68324A1268926E013A120ED2B21A7061
+:102DD0002E4B1B68DB6801332C4A1268926E013A55
+:102DE000120CD2B21A70294B1B68DB680233274AD7
+:102DF0001268926E013A120AD2B21A70234B1B6803
+:102E0000DB680333214A1268926ED2B2013AD2B221
+:102E10001A701E4B1B68DB6804331C4A1268B2F838
+:102E200066201216D2B21A70184B1B68DB68053385
+:102E3000164A1268B2F866201214D2B21A70134BF6
+:102E40001B68DB680633114A1268B2F86620120A62
+:102E500092B2D2B21A700D4B1B68DB6807330B4A73
+:102E60001268B2F86620D2B21A70084B1B680822AA
+:102E70005A81054B1B68002098471037BD4680BD1E
+:102E8000000E0020F80D0020FC0D0020F00D0020A9
+:102E900080B500AF0548FEF739FA0346002B04D091
+:102EA00000200021002200F003F880BDB12E0008B0
+:102EB00080B584B000AFF860B9607A60FB68002B21
+:102EC0000FD13E4B1A683E4B1B7810461946022222
+:102ED0003A2300F077F93B4B1B684FF0FF309847DF
+:102EE00068E0394B1B68FA681A61374B1B68FA684F
+:102EF0000832DA60344B1B68DB6800221A70324BF0
+:102F00001B68DB68013300221A702F4B1B68DB68DB
+:102F1000023300221A702C4B1B68DB680333082233
+:102F20001A70294B1B68DB680433BA68013A120E29
+:102F3000D2B21A70244B1B68DB680533BA68013AB9
+:102F4000120CD2B21A70204B1B68DB680633BA68C9
+:102F5000013A120AD2B21A701B4B1B68DB680733A6
+:102F6000BA68D2B2013AD2B21A70174B1B68DB684A
+:102F7000083302221A70144B1B68DB6809337A6825
+:102F8000120CD2B21A70104B1B68DB680A337A68D5
+:102F9000120AD2B21A700C4B1B68DB680B337A68CA
+:102FA000D2B21A70084B1B680C225A81054B1B6861
+:102FB000002098471037BD4680BD00BF000E00209E
+:102FC000F80D0020FC0D0020F00D002080B582B02F
+:102FD00000AF0823FB80FDF7D7FD3860114B1B685D
+:102FE0003A681A610F4B1B683A680832DA600D4B79
+:102FF0001B68FA885A810BE0FB88013BFB80094B78
+:103000001B68DA68FB881344FA8807498A5C1A70DF
+:10301000FB88002BF0D1054B1B6800209847083730
+:10302000BD4680BDF00D00205C7E0008FC0D002038
+:1030300080B582B000AF0823FB80FDF7A5FD3860A6
+:10304000114B1B683A681A610F4B1B683A680832CB
+:10305000DA600D4B1B68FA885A810BE0FB88013B54
+:10306000FB80094B1B68DA68FB881344FA88074920
+:103070008A5C1A70FB88002BF0D1054B1B6800207E
+:1030800098470837BD4680BDF00D0020647E0008DB
+:10309000FC0D002080B582B000AFFDF775FD3860F3
+:1030A000454B1B683A681A61434B1B683A68083203
+:1030B000DA600023FB7109E03F4B1B68DA68FB799B
+:1030C000134400221A70FB790133FB71FB79112B39
+:1030D000F2D9394B1B68DB6870221A70364B1B68BB
+:1030E000DB6807330C221A70334B1B6893F864209B
+:1030F000314B1B6893F865309A4244D02E4B1B68C5
+:10310000DB689A1C2C4B19682B4B1B6893F86430B6
+:103110000833DB000B441B79DBB21370264B1B68B2
+:10312000DB6803F10C02244B1968234B1B6893F8EE
+:1031300064300833DB000B445B7ADBB213701E4B48
+:103140001B68DB6803F10D021B4B19681A4B1B68E7
+:1031500093F864300833DB000B441B7ADBB2137046
+:10316000154B1B6893F864200132D2B283F86420B7
+:10317000114B1B6893F86430042B04D10E4B1B6871
+:10318000002283F864200C4B1B6812225A810B4BDF
+:103190001B6804331B78122B07D8074B1B68074AA0
+:1031A00012680432127892B25A81054B1B680020D3
+:1031B00098470837BD4680BDF00D0020F40D002073
+:1031C000FC0D002080B485B000AF78600846114641
+:1031D0001A460346FB700B46BB7013467B707B6838
+:1031E000D3F81832FB60FB6893F86530B978FA6859
+:1031F0000833DB0013440A461A71FB6893F8653004
+:1032000018467B781B021946FA6800F10803DB00B8
+:1032100013449960FB6893F865300133DAB2FB68B8
+:1032200083F86520FB6893F86530042B03D1FB68B5
+:10323000002283F865201437BD465DF8047B704793
+:1032400080B500AF044B1B6800225A81034B1B68FA
+:103250000020984780BD00BFF00D0020FC0D00202D
+:1032600080B582B002AF5A4B1B681B7A002B40F02E
+:10327000A280574B1B6893F82030DBB25BB2002B67
+:1032800011DB544B1A68524B1B6893F821301046DF
+:10329000194605222023FFF795FF4F4B1B684FF07F
+:1032A000FF30984791E04A4B1B684C4A1268023243
+:1032B00012781106494A1268033212781204114337
+:1032C000464A12680432127812020A4343490968D6
+:1032D000053109780A43DA663D4B1B683F4A12689C
+:1032E00007321278120291B23C4A12680832127800
+:1032F00092B20A4392B292B2A3F87020344B1B6888
+:10330000DA6E334B1B68B3F870301046194600F084
+:10331000B9FA0346002B11DA2E4B1A682C4B1B68A6
+:1033200093F821301046194605222023FFF74AFF63
+:10333000294B1B684FF0FF30984746E0244B1B6831
+:10334000DB69234A1268B2F870201146204A1268DD
+:10335000B2F8662002FB01F2934211D01D4B1A68AD
+:103360001B4B1B6893F82130104619460522202379
+:10337000FFF728FF184B1B684FF0FF30984724E0F9
+:10338000134B1B68DB6E1A464FF0000310490968A7
+:10339000B1F8701008460E490968C969009001919A
+:1033A0000F48FEF719F80346002B03D0012000F068
+:1033B0001BF80AE009E00B48FEF75EF80346002B15
+:1033C00003D00020002100F043F8BD4680BD00BFBF
+:1033D000F00D0020000E0020FC0D0020F40D002058
+:1033E000E93300085134000880B582B000AF0346CD
+:1033F000FB71FB79002B0FD0104B1A68104B1B7818
+:103400001046194602223A23FFF7DCFE0D4B1B68DB
+:103410004FF0FF3098470DE00B4B1B6802221A72E9
+:103420000A48FEF729F80346002B03D000200021AC
+:1034300000F00EF80837BD4680BD00BF000E00202A
+:10344000F80D0020FC0D0020F00D00205134000884
+:1034500080B582B000AF78600B467B807B68002B24
+:103460000FD1204B1A68204B1B78104619460422B6
+:103470001123FFF7A7FE1D4B1B684FF0FF30984745
+:103480002DE01B4B1B681B69002B00D0FEE7184B7F
+:103490001B687A681A61164B1B687A680832DA6012
+:1034A000104B1968124B1B68DA687B88084681212B
+:1034B000FDF73CF90E4B1B680D4A1268D16B7A88F8
+:1034C0008A1ADA630A4B1B68DB6B002B03D1084BAB
+:1034D0001B6803221A72054B1B68002098470837A7
+:1034E000BD4680BD000E0020F80D0020FC0D002020
+:1034F000F00D002080B584B002AF7B4B1B681B7AB7
+:10350000002B40F09D80784B1B6893F82030DBB295
+:103510005BB2002B11DA754B1A68734B1B6893F87A
+:1035200021301046194605222023FFF74BFE704B31
+:103530001B684FF0FF309847D2E06B4B1B686D4A19
+:1035400012680232127811066A4A1268033212783F
+:1035500012041143674A12680432127812020A43B5
+:1035600064490968053109780A43DA665E4B1B68CD
+:10357000604A126807321278120291B25D4A1268EC
+:103580000832127892B20A4392B292B2A3F8702033
+:10359000554B1B68DA6E544B1B68B3F870301046FD
+:1035A000194600F06FF90346002B11DA4F4B1A68E9
+:1035B0004D4B1B6893F821301046194605222023F5
+:1035C000FFF700FE4A4B1B684FF0FF30984787E03B
+:1035D000454B1B68DB69444A1268B2F870201146FB
+:1035E000414A1268B2F8662002FB01F2934211D000
+:1035F0003E4B1A683C4B1B6893F821301046194625
+:1036000005222023FFF7DEFD394B1B684FF0FF300A
+:10361000984765E0344B1B68DB6E1A464FF0000399
+:1036200031490968B1F8701000913348FDF7B6FFD1
+:103630000346002B03D0012000F064F850E04FE077
+:10364000294B1B68DB6BB3F5007F28BF4FF4007379
+:103650007B60254B1B681B6918467968FEF73EF8AE
+:103660000346002B0FD0214B1A68244B1B781046C1
+:10367000194604220323FFF7A5FD1D4B1B684FF0DD
+:10368000FF3098472CE0184B1B68174A1268D16B23
+:103690007A688A1ADA63144B1B68DB6B002B0AD139
+:1036A000124B1B681846002100F0C0FA104B1B6833
+:1036B0000020984714E01248FDF72AFA0346002B31
+:1036C0000ED00A4B1A680D4B1B7810461946022281
+:1036D0003A23FFF777FD064B1B684FF0FF30984702
+:1036E0000837BD4680BD00BFF00D0020000E002051
+:1036F000FC0D0020F40D002005370008F80D002017
+:10370000A937000880B582B000AF0346FB71FB7992
+:10371000022B0FD11F4B1A681F4B1B7810461946FE
+:1037200002222723FFF74EFD1C4B1B684FF0FF3092
+:1037300098472BE0FB79002B0FD0164B1A68164BDD
+:103740001B781046194602223A23FFF73BFD134B24
+:103750001B684FF0FF30984718E0114B1B6801229F
+:103760001A721048FDF7D4F90346002B0ED0094B0E
+:103770001A68094B1B781046194602223A23FFF7B4
+:1037800021FD064B1B684FF0FF3098470837BD46B8
+:1037900080BD00BF000E0020F80D0020FC0D0020B1
+:1037A000F00D0020A937000880B582B000AF786026
+:1037B000104B1B687A681A610E4B1B687A680832D6
+:1037C000DA600D4B19680B4B1B68DA68094B1B68F4
+:1037D000DB6BB3F5007F28BF4FF400739BB2084644
+:1037E0000121FCF7BDFF054B1B68002098470837F7
+:1037F000BD4680BDF00D0020000E0020FC0D002015
+:1038000080B500AF1A4B1B6801331B7803F002032D
+:10381000002B0FD0174B1A68174B1B781046194610
+:1038200005222423FFF7CEFC144B1B684FF0FF301A
+:1038300098471BE0124B1B68DA6E114B1B68B3F8FC
+:1038400070301046194600F01DF80346002B05DACB
+:103850000A4B1B684FF0FF30984707E0084B1B6886
+:1038600000225A81054B1B680020984780BD00BF8D
+:10387000F40D0020000E0020F80D0020FC0D0020AB
+:10388000F00D002080B582B000AF78600B467B80E1
+:103890000F4B1B689A6E7B689A4207D37A887B68C5
+:1038A0001A440B4B1B689B6E9A420BD9094B1A6842
+:1038B000094B1B781046194605222123FFF782FC8D
+:1038C000FF2300E000235BB218460837BD4680BDE9
+:1038D000F00D0020000E0020F80D002080B584B00F
+:1038E00000AF78607B68D3F81832FB60FB68002279
+:1038F0001A72FB6800225A72FB68002283F8652066
+:10390000FB68002283F8642078680121FCF792FEAE
+:1039100078688121FCF78EFEFB68143378680121FA
+:103920001A461F23FCF71CFF1037BD4680BD00BFA1
+:1039300080B584B000AF78607B68D3F81832FB6044
+:10394000FB6800221A72FB6801225A72FB6814336A
+:10395000786801211A461F23FCF702FF1037BD4685
+:1039600080BD00BF80B485B000AF78607B68D3F8BD
+:103970001832FB60FB6800221A721437BD465DF8EE
+:10398000047B704780B584B000AF78600B46FB7055
+:103990007B68D3F81832FB60FB681B7A022B04D0DB
+:1039A000022B16DB042B14DC0EE00C4A7B68136040
+:1039B000FB6893F82120FB682333786811461A4688
+:1039C000074BFEF7EDFF05E07868002100F02EF9C7
+:1039D00000E000BF1037BD4680BD00BF040E0020D0
+:1039E000E539000880B582B000AF0346FB7197F956
+:1039F0000730002B05DA044B1B681846012100F044
+:103A000015F90837BD4680BD040E002080B584B08E
+:103A100000AF78600B46FB707B68D3F81832FB6010
+:103A2000FB681B7A002B02D0012B04D012E07868CF
+:103A300000F02CF80EE0094A7B681360FB6893F8ED
+:103A40002120FB682333786811461A46044BFEF7A1
+:103A5000A7FF00BF1037BD4680BD00BF040E002089
+:103A6000653A000880B582B000AF0346FB7197F954
+:103A70000730002B05DA044B1B681846012100F0C3
+:103A8000D5F80837BD4680BD040E002080B584B04F
+:103A900000AF78607B68D3F81832FB60FB689A69E6
+:103AA000FB689A63FB68DA69FB68DA63786801216E
+:103AB000FCF770FE03461F2B13D1FB685B691B4AA2
+:103AC00093420ED1FB6893F82130012B09D8FB6893
+:103AD00093F82230002B04D0FB6893F82230102B8F
+:103AE0000FD9FB6893F82130786819460522202306
+:103AF000FFF768FBFB6802225A72786800F0C2F890
+:103B000010E00B4A7B6813600A4AFB681360FB688D
+:103B100093F82120FB682333786811461A46064B38
+:103B2000FEF73EFF1037BD4680BD00BF55534243F0
+:103B3000040E0020080E00203D3B000880B582B036
+:103B400000AF0346FB7197F90730002B11DA214BC8
+:103B50001B681B7A052B06D11F4B1B6818460121D9
+:103B600000F064F832E01C4B1B68184600F08AF83D
+:103B70002CE0184B1B681B7A022B27D0154B1B68B7
+:103B80001B7A012B22D0134B1B681B7A032B1DD0F1
+:103B9000104B1B685B89002B0DD00F4B19680D4B28
+:103BA0001B68DA680B4B1B685B89084611461A468E
+:103BB00000F014F80AE0074B1B685B89002B05D165
+:103BC000054B1B681846002100F030F80837BD4649
+:103BD00080BD00BF080E0020040E002080B586B016
+:103BE00000AFF860B9601346FB80FB68D3F8183269
+:103BF0007B61FA887B69DB69934228BF1346FB80AF
+:103C00007B69DA6BFB88D21A7B69DA637B690022F5
+:103C100083F840207B6904221A72FB88F8688121AE
+:103C2000BA68FCF783FD1837BD4680BD80B584B007
+:103C300000AF78600B46FB707B68D3F81832FB60EE
+:103C4000FB680F4A5A63FB68FA7883F84020FB68E8
+:103C500000221A72FB6800221A61FB68343378680C
+:103C600081211A460D23FCF761FDFB681433786847
+:103C700001211A461F23FCF773FD1037BD4680BD96
+:103C80005553425380B584B000AF78607B68D3F859
+:103C90001832FB60FB6893F82030002B0BD1FB68D7
+:103CA000DB69002B07D0FB685B7A002B03D17868B7
+:103CB0000121FCF7D3FC78688121FCF7CFFCFB687D
+:103CC0005B7A022B07D1FB681433786801211A460E
+:103CD0001F23FCF745FD1037BD4680BD80B584B07D
+:103CE00000AF78600B46FB707B68D3F81832FB603E
+:103CF000FB685B7A022B07D178688121FCF7AEFC68
+:103D0000FB6800225A720BE0FB785BB2002B07DAEB
+:103D1000FB685B7A012B03D078680121FFF786FFEF
+:103D20001037BD4680BD00BF80B584B000AF78605D
+:103D30000B46FB700023FB817B681B7C002B0ED1A4
+:103D40007868012102224FF40073FCF745FC786883
+:103D5000812102224FF40073FCF73EFC0BE07868EF
+:103D6000012102224023FCF737FC786881210222DE
+:103D70004023FCF731FC742003F068FF03461A4629
+:103D80007B68C3F818227B68D3F81832002B02D165
+:103D90000123FB8109E07868FFF7A0FD7B68D3F879
+:103DA000183200221A610023FB81FB89DBB218461E
+:103DB0001037BD4680BD00BF80B582B000AF7860CF
+:103DC0000B46FB7078680121FCF720FC78688121A4
+:103DD000FCF71CFC7868FFF7C5FD7B68D3F8183248
+:103DE000002B09D07B68D3F81832184603F036FF51
+:103DF0007B680022C3F81822002318460837BD4606
+:103E000080BD00BF80B584B000AF786039607B684A
+:103E1000D3F81832FB603B681B7803F06003002B7B
+:103E200046D0202B00D09DE03B685B78FE2B02D073
+:103E3000FF2B1ED035E03B685B88002B13D13B681D
+:103E4000DB88012B0FD13B681B78DBB25BB2002B08
+:103E500009DAFB6800221A60FB68786819460122BB
+:103E6000FDF724FE23E078683968FEF781FA022323
+:103E700079E03B685B88002B0DD13B68DB88002B29
+:103E800009D13B681B78DBB25BB2002B03DB78689F
+:103E9000FFF74EFD0BE078683968FEF769FA0223F8
+:103EA00061E078683968FEF763FA02235BE059E065
+:103EB0003B685B780A2B04D00B2B0AD0012B0FD068
+:103EC0004FE0FB680433786819460122FDF7EEFDE8
+:103ED00047E03B685B88DBB21A46FB685A6040E00B
+:103EE0003B689B88DBB278681946FCF7A3FB3B680C
+:103EF0009B88DBB278681946FCF788FB3B689B8897
+:103F0000DBB25BB2002B12DA7B681B7C002B07D183
+:103F10007868812102224FF40073FCF75DFB18E002
+:103F20007868812102224023FCF756FB11E07B6870
+:103F30001B7C002B07D17868012102224FF400730B
+:103F4000FCF74AFB05E07868012102224023FCF7D8
+:103F500043FB3B689B88DBB278681946FFF7BEFEDF
+:103F600000BF00BF002318461037BD4680BD00BF0C
+:103F700080B582B000AF78600B46FB70FB78786844
+:103F80001946FFF7FFFC002318460837BD4680BDE1
+:103F900080B582B000AF78600B46FB70FB78786824
+:103FA0001946FFF733FD002318460837BD4680BD8C
+:103FB00080B582B000AF78607B68D3F81832002BF0
+:103FC00011D07B68D3F818321B69002B0BD07B68AB
+:103FD000D3F818321B691846FCF7FEFD7B68D3F84E
+:103FE000183200221A61002318460837BD4680BDEA
+:103FF00080B483B000AF78607B6820221A80034BC6
+:1040000018460C37BD465DF8047B704770000020F1
+:1040100080B483B000AF78607B6820221A80034BA5
+:1040200018460C37BD465DF8047B704790000020B1
+:1040300080B483B000AF78607B6820221A80034B85
+:1040400018460C37BD465DF8047B7047B000002071
+:1040500080B483B000AF78607B680A221A80034B7B
+:1040600018460C37BD465DF8047B7047D000002031
+:1040700084B080B582B000AF786007F1140080E8AA
+:104080000E00BB6A012B20D17B689B6B23F480322E
+:104090007B689A637B68DB6823F4840323F0400326
+:1040A0007A68D3607B68DB6823F440127B68DA604F
+:1040B0003B6C012B05D17B68DB6843F480127B6885
+:1040C000DA60786801F0CCF90CE07B68DB6843F0DB
+:1040D00040027B68DA60786801F0C2F97B684FF4CF
+:1040E00080329A633B6A012B0BD17B689B6843F05B
+:1040F0000C027B689A607B689B6843F020027B68B7
+:104100009A60002318460837BD46BDE8804004B0D9
+:10411000704700BF80B483B000AF78607B689B6855
+:1041200043F001027B689A60002318460C37BD46B5
+:104130005DF8047B704700BF80B483B000AF786047
+:104140007B689B6823F001027B689A600023184615
+:104150000C37BD465DF8047B704700BF80B582B068
+:1041600000AF78600B46FB707B68DB6823F0C042D1
+:104170007B68DA60FB78012B06D17B68DB6843F053
+:1041800000527B68DA6008E0FB78002B05D17B6881
+:10419000DB6843F080427B68DA60322003F0EAFC9F
+:1041A000002318460837BD4680BD00BF84B080B5E7
+:1041B00084B000AF786007F11C0080E80E00002397
+:1041C000FB607B689B6B43F400227B689A633B6CCB
+:1041D000002B05D17B689B6B43F400127B689A63CC
+:1041E0007B6803F560631A46002313607B6803F560
+:1041F00000631A467B6803F500631B6813603B6B22
+:10420000012B0CD17B6A002B04D17868002100F0CF
+:1042100041F908E07868012100F03CF903E0786892
+:10422000032100F037F97868102100F0EBF8786886
+:1042300000F00EF97B6803F500631A460023136152
+:104240007B6803F500631A46002353617B6803F51E
+:1042500000631A464FF0FF3393617B6803F50063F8
+:104260001A460023D3610023FB6031E0FB685A014A
+:104270007B68134403F510631B68002B0ADAFB68A4
+:104280005A017B68134403F510631A464FF09043BC
+:10429000136008E0FB685A017B68134403F5106360
+:1042A0001A4600231360FB685A017B68134403F528
+:1042B00010631A4600231361FB685A017B6813449C
+:1042C00003F510631A46FF239360FB680133FB601C
+:1042D000FA69FB689A42C9D80023FB6031E0FB68A9
+:1042E0005A017B68134403F530631B68002B0ADA1C
+:1042F000FB685A017B68134403F530631A464FF09C
+:104300009043136008E0FB685A017B68134403F58F
+:1043100030631A4600231360FB685A017B6813441C
+:1043200003F530631A4600231361FB685A017B686A
+:10433000134403F530631A46FF239360FB6801338F
+:10434000FB60FA69FB689A42C9D87B6803F5006391
+:104350001A467B6803F500631B6923F480731361BD
+:10436000BB6A012B17D17B6803F500631A46234B08
+:1043700013637B6803F500631A467B6803F50063EB
+:104380001B6B43F4803343F0030313637B6803F533
+:1043900000631B6BFB607B6800229A617B686FF097
+:1043A00080425A61BB6A002B05D17B689B6943F050
+:1043B00010027B689A617B689A69114B13437A6893
+:1043C00093617B6B002B05D07B689B6943F00802EF
+:1043D0007B689A613B6C012B07D17B689B6943F03A
+:1043E000804343F004037A68936100231846103732
+:1043F000BD46BDE8804004B0704700BF00018000AA
+:1044000000383C8080B485B000AF7860396000230C
+:10441000FB603B689B0143F020027B681A61FB68EC
+:104420000133FB60FB68094A934201D9032306E08C
+:104430007B681B6903F02003002BF0D10023184692
+:104440001437BD465DF8047B704700BF400D030084
+:1044500080B485B000AF78600023FB607B681022D9
+:104460001A61FB680133FB60FB68094A934201D97A
+:10447000032306E07B681B6903F01003002BF0D1D7
+:10448000002318461437BD465DF8047B704700BF13
+:10449000400D030080B483B000AF78600B46FB7022
+:1044A0007B6803F5006319467B6803F500631A68AF
+:1044B000FB7813430B60002318460C37BD465DF8AC
+:1044C000047B704780B485B000AF78600023FB7335
+:1044D0007B6803F500639B6803F00603002B02D1A1
+:1044E0000023FB731CE07B6803F500639B6803F00B
+:1044F0000603022B07D07B6803F500639B6803F07B
+:104500000603062B02D10323FB7309E07B6803F546
+:1045100000639B6803F00603042B01D10223FB73A5
+:10452000FB7B18461437BD465DF8047B704700BF1F
+:1045300080B483B000AF786039603B685B78012B52
+:104540003ED17B6803F5006319467B6803F5006381
+:10455000DA693B681B781846012383409BB21343FA
+:10456000CB613B681B785A017B68134403F51063E9
+:104570001B6803F40043002B5CD13B681B785A0195
+:104580007B68134403F5106318463B681B785A0197
+:104590007B68134403F510631A683B689B68C3F398
+:1045A0000A033968C97889040B4339680978890591
+:1045B0000B43134343F0805343F40043036039E05B
+:1045C0007B6803F5006319467B6803F50063DB69CC
+:1045D0003A68127810460122824012041343CB61DC
+:1045E0003B681B785A017B68134403F530631B68F2
+:1045F00003F40043002B1DD13B681B785A017B68F4
+:10460000134403F5306318463B681B785A017B68F6
+:10461000134403F530631A683B689B68C3F30A03CD
+:104620003968C97889040B43134343F0805343F43A
+:1046300000430360002318460C37BD465DF8047B39
+:10464000704700BF80B483B000AF786039603B68CA
+:104650005B78012B35D17B6803F5006319467B68D5
+:1046600003F50063DA6B3B681B781846012383402F
+:104670009BB2DB431340CB637B6803F500631946B1
+:104680007B6803F50063DA693B681B7818460123F1
+:1046900083409BB2DB431340CB613B681B785A01DC
+:1046A0007B68134403F5106319463B681B785A0175
+:1046B0007B68134403F510631B6823F400430B600D
+:1046C00034E07B6803F5006319467B6803F50063FB
+:1046D000DA6B3B681B781846012383401B04DB43DD
+:1046E0001340CB637B6803F5006319467B6803F5D1
+:1046F0000063DA693B681B781846012383401B047A
+:10470000DB431340CB613B681B785A017B68134441
+:1047100003F5306319463B681B785A017B681344E4
+:1047200003F530631B6823F400430B600023184635
+:104730000C37BD465DF8047B704700BF90B589B06B
+:1047400002AFF860B9601346FB710023FB82BB68BF
+:104750005B78012B40F04681BB685B69002B3BD145
+:10476000BB681B785A01FB68134403F510631946B4
+:10477000BB681B785A01FB68134403F510631B697F
+:1047800023F0FF5323F4C0130B61BB681B785A015D
+:10479000FB68134403F510631946BB681B785A0184
+:1047A000FB68134403F510631B6943F400230B619A
+:1047B000BB681B785A01FB68134403F51063194664
+:1047C000BB681B785A01FB68134403F510631B692F
+:1047D000DB0CDB040B6186E0BB681B785A01FB68CD
+:1047E000134403F510631946BB681B785A01FB6834
+:1047F000134403F510631B69DB0CDB040B61BB681E
+:104800001B785A01FB68134403F510631946BB6813
+:104810001B785A01FB68134403F510631B6923F0EE
+:10482000FF5323F4C0130B61BB681B785A01FB686C
+:10483000134403F510631846BB681B785A01FB68E4
+:10484000134403F510631A69BB685969BB689B6818
+:104850000B44591EBB689B68B1FBF3F3D9048C4B26
+:104860000B4013430361BB681B785A01FB68134478
+:1048700003F510631946BB681B785A01FB681344A3
+:1048800003F510631A69BB685B69C3F31203134332
+:104890000B61BB68DB78012B25D1BB681B785A0103
+:1048A000FB68134403F510631946BB681B785A0173
+:1048B000FB68134403F510631B6923F0C0430B61CD
+:1048C000BB681B785A01FB68134403F51063194653
+:1048D000BB681B785A01FB68134403F510631B691E
+:1048E00043F000530B61FB79012B0BD1BB681B78A4
+:1048F0005A01FB68134403F510631A46BB681B6931
+:10490000536116E0BB68DB78012B12D0BB685B6992
+:10491000002B0ED0FB6803F500631946FB6803F516
+:1049200000635B6BBA681278104601228240134321
+:104930004B63BB68DB78012B2ED1FB6803F500636A
+:104940009B6803F48073002B13D1BB681B785A015A
+:10495000FB68134403F510631946BB681B785A01C2
+:10496000FB68134403F510631B6843F000530B60AE
+:1049700012E0BB681B785A01FB68134403F510630F
+:104980001946BB681B785A01FB68134403F5106392
+:104990001B6843F080530B60BB681B785A01FB68AF
+:1049A000134403F510631946BB681B785A01FB6872
+:1049B000134403F510631B6843F004430B60BB68AA
+:1049C000DB78012B40F0F580BB68D968BB681A78AA
+:1049D000BB685B699CB2FB790093F868234600F0E2
+:1049E0004DFAE6E0BB681B785A01FB68134403F5F7
+:1049F00030631946BB681B785A01FB68134403F502
+:104A000030631B69DB0CDB040B61BB681B785A014C
+:104A1000FB68134403F530631946BB681B785A01E1
+:104A2000FB68134403F530631B6923F0FF5323F441
+:104A3000C0130B61BB685B69002B2BD1BB681B7873
+:104A40005A01FB68134403F530631946BB681B78B1
+:104A50005A01FB68134403F530631A69BB689B680D
+:104A6000C3F3120313430B61BB681B785A01FB6845
+:104A7000134403F530631946BB681B785A01FB6881
+:104A8000134403F530631B6943F400230B613CE0DE
+:104A90000000F81FBB685A69BB689B6813445A1E24
+:104AA000BB689B68B2FBF3F3FB82BB681B785A01BF
+:104AB000FB68134403F530631946BB681B785A0141
+:104AC000FB68134403F530631A69FB8ADB0418465C
+:104AD0003A4B034013430B61BB681B785A01FB68D8
+:104AE000134403F530631846BB681B785A01FB6812
+:104AF000134403F530631A69BB689B68F98A01FBAC
+:104B000003F3C3F3120313430361FB79012B0AD1AF
+:104B1000BB681B785A01FB68134403F530631A46DF
+:104B2000BB68DB685361BB68DB78012B2ED1FB6867
+:104B300003F500639B6803F48073002B13D1BB68FB
+:104B40001B785A01FB68134403F530631946BB68B0
+:104B50001B785A01FB68134403F530631B6843F06C
+:104B600000530B6012E0BB681B785A01FB681344CA
+:104B700003F530631946BB681B785A01FB68134480
+:104B800003F530631B6843F080530B60BB681B78F0
+:104B90005A01FB68134403F530631946BB681B7860
+:104BA0005A01FB68134403F530631B6843F0044368
+:104BB0000B60002318461C37BD4690BD0000F81F4F
+:104BC00080B485B000AFF860B9601346FB71BB6874
+:104BD0005B78012B40F0D180BB685B69002B3BD137
+:104BE000BB681B785A01FB68134403F51063194630
+:104BF000BB681B785A01FB68134403F510631B69FB
+:104C000023F0FF5323F4C0130B61BB681B785A01D8
+:104C1000FB68134403F510631946BB681B785A01FF
+:104C2000FB68134403F510631B6943F400230B6115
+:104C3000BB681B785A01FB68134403F510631946DF
+:104C4000BB681B785A01FB68134403F510631B69AA
+:104C5000DB0CDB040B615AE0BB681B785A01FB6874
+:104C6000134403F510631946BB681B785A01FB68AF
+:104C7000134403F510631B69DB0CDB040B61BB6899
+:104C80001B785A01FB68134403F510631946BB688F
+:104C90001B785A01FB68134403F510631B6923F06A
+:104CA000FF5323F4C0130B61BB685A69BB689B6850
+:104CB0009A4203D9BB689A68BB685A61BB681B7883
+:104CC0005A01FB68134403F510631946BB681B784F
+:104CD0005A01FB68134403F510631B6943F4002376
+:104CE0000B61BB681B785A01FB68134403F5106322
+:104CF0001946BB681B785A01FB68134403F510631F
+:104D00001A69BB685B69C3F3120313430B61FB7938
+:104D1000012B0BD1BB681B785A01FB68134403F5C8
+:104D200010631A46BB681B69536112E0BB685B697C
+:104D3000002B0ED0FB6803F500631946FB6803F5F2
+:104D400000635B6BBA6812781046012282401343FD
+:104D50004B63BB681B785A01FB68134403F510636F
+:104D60001946BB681B785A01FB68134403F51063AE
+:104D70001B6843F004430B6079E0BB681B785A0161
+:104D8000FB68134403F530631946BB681B785A016E
+:104D9000FB68134403F530631B69DB0CDB040B6118
+:104DA000BB681B785A01FB68134403F5306319464E
+:104DB000BB681B785A01FB68134403F530631B6919
+:104DC00023F0FF5323F4C0130B61BB685B69002B16
+:104DD00003D0BB689A68BB685A61BB681B785A01EC
+:104DE000FB68134403F530631946BB681B785A010E
+:104DF000FB68134403F530631B6943F400230B6124
+:104E0000BB681B785A01FB68134403F530631946ED
+:104E1000BB681B785A01FB68134403F530631A69B9
+:104E2000BB689B68C3F3120313430B61FB79012B2F
+:104E30000AD1BB681B785A01FB68134403F5306341
+:104E40001A46BB68DB685361BB681B785A01FB6874
+:104E5000134403F530631946BB681B785A01FB689D
+:104E6000134403F530631B6843F004430B600023D5
+:104E700018461437BD465DF8047B704780B487B090
+:104E800000AFF860B96011461A460B46FB71134635
+:104E9000BB8000233B6100237B6197F82030002B0F
+:104EA0001DD1BB880333002B00DA03339B103B6119
+:104EB00000237B610FE0FB791A03FB68134403F5C1
+:104EC00080531A46BB681B6813607B6901337B61A2
+:104ED000BB680433BB607A693B699A42EBD3002319
+:104EE00018461C37BD465DF8047B704780B487B018
+:104EF00000AFF860B9601346FB8000237B61FB883C
+:104F00000333002B00DA03339B103B6100237B61EA
+:104F10000BE0FB6803F580531A68BB681A607B6975
+:104F200001337B61BB680433BB607A693B699A4299
+:104F3000EFD3BB6818461C37BD465DF8047B70474D
+:104F400080B483B000AF786039603B685B78012B38
+:104F500030D13B681B785A017B68134403F510631A
+:104F60001B68002B12DB3B681B785A017B681344DB
+:104F700003F5106319463B681B785A017B6813449C
+:104F800003F510631B6823F080430B603B681B78BC
+:104F90005A017B68134403F5106319463B681B787C
+:104FA0005A017B68134403F510631B6843F4001334
+:104FB0000B602FE03B681B785A017B68134403F5B4
+:104FC00030631B68002B12DB3B681B785A017B683F
+:104FD000134403F5306319463B681B785A017B681C
+:104FE000134403F530631B6823F080430B603B6878
+:104FF0001B785A017B68134403F5306319463B68FC
+:105000001B785A017B68134403F530631B6843F433
+:1050100000130B60002318460C37BD465DF8047B77
+:10502000704700BF80B483B000AF786039603B68E0
+:105030005B78012B2ED13B681B785A017B681344A7
+:1050400003F5106319463B681B785A017B681344CB
+:1050500003F510631B6823F400130B603B68DB78D7
+:10506000032B03D03B68DB78022B41D13B681B78D4
+:105070005A017B68134403F5106319463B681B789B
+:105080005A017B68134403F510631B6843F0805397
+:105090000B602DE03B681B785A017B68134403F5D5
+:1050A000306319463B681B785A017B68134403F54B
+:1050B00030631B6823F400130B603B68DB78032B21
+:1050C00003D03B68DB78022B12D13B681B785A0176
+:1050D0007B68134403F5306319463B681B785A011B
+:1050E0007B68134403F530631B6843F080530B6007
+:1050F000002318460C37BD465DF8047B704700BF9F
+:1051000080B584B000AF78600023FB6014E0FB68DA
+:105110005A017B68134403F510631A46FF2393601A
+:10512000FB685A017B68134403F530631A46FF237A
+:105130009360FB680133FB60FB680E2BE7D97B684B
+:1051400003F500631A464FF0FF3393617B6803F564
+:1051500000631A46002313617B6803F500631A4657
+:10516000002353617B6803F500631A460023D36173
+:105170007868FFF76DF978681021FFF743F900238D
+:1051800018461037BD4680BD80B483B000AF78604C
+:105190000B46FB707B6803F500631A467B6803F5DA
+:1051A00000631B6823F4FE6313607B6803F50063F0
+:1051B00019467B6803F500631A68FB781B0103F44A
+:1051C000FE6313430B60002318460C37BD465DF8A1
+:1051D000047B704780B582B000AF78607B6803F5D0
+:1051E00000631A467B6803F500635B6823F00203E3
+:1051F0005360032002F0BEFC002318460837BD466A
+:1052000080BD00BF80B582B000AF78607B6803F5D9
+:1052100000631A467B6803F500635B6843F0020392
+:105220005360032002F0A6FC002318460837BD4651
+:1052300080BD00BF80B485B000AF78600023FB6004
+:105240007B685B69FB607B689B69FA681340FB6065
+:10525000FB6818461437BD465DF8047B704700BFF5
+:1052600080B485B000AF78607B6803F500639B690C
+:10527000FB607B6803F50063DB69FA681340FB6041
+:10528000FB681B0C18461437BD465DF8047B70475D
+:1052900080B485B000AF78607B6803F500639B69DC
+:1052A000FB607B6803F50063DB69FA681340FB6011
+:1052B000FB689BB218461437BD465DF8047B704707
+:1052C00080B485B000AF78600B46FB70FB785A0164
+:1052D0007B68134403F530639B68FB607B6803F5D0
+:1052E00000635B69FA681340FB60FB68184614377B
+:1052F000BD465DF8047B704780B487B000AF78602E
+:105300000B46FB707B6803F500631B697B617B6860
+:1053100003F500635B6B3B61FB783A6922FA03F3A8
+:10532000DB01DBB27A6913437B61FB785A017B684E
+:10533000134403F510639A687B691340FB60FB68B4
+:1053400018461C37BD465DF8047B704780B483B0B7
+:1053500000AF78607B685B6903F0010318460C3787
+:10536000BD465DF8047B704780B483B000AF7860C1
+:105370007B6803F510631A467B6803F510631B68AE
+:1053800023F4FF6323F0070313607B6803F50063D6
+:105390009B6803F00603042B0AD17B6803F51063B6
+:1053A0001A467B6803F510631B6843F00303136020
+:1053B0007B6803F500631A467B6803F500635B684E
+:1053C00043F480735360002318460C37BD465DF8E4
+:1053D000047B704780B485B000AFF8600B467A60FC
+:1053E000FB72FB6803F530631A4600231361FB6808
+:1053F00003F530631A46FB6803F530631B6943F419
+:1054000000231361FB6803F530631A46FB6803F55C
+:1054100030631B6943F018031361FB6803F53063C5
+:105420001A46FB6803F530631B6943F0C043136100
+:10543000FB7A012B0CD1FB6803F530631A467B68BD
+:105440005361FB6803F530631A464FF08023136005
+:10545000002318461437BD465DF8047B704700BF33
+:1054600080B485B000AF78600023FB60FB68013337
+:10547000FB60FB68134A934201D903231BE07B685E
+:105480001B69002BF2DA0023FB607B681B6943F089
+:1054900001027B681A61FB680133FB60FB68094A03
+:1054A000934201D9032306E07B681B6903F00103E3
+:1054B000002BF0D1002318461437BD465DF8047B5D
+:1054C000704700BF400D030080B582B000AF786028
+:1054D0007B68002B01D1012357E07B6893F85130A2
+:1054E000DBB2002B06D17B68002283F8502078685D
+:1054F000FCF786FA7B68022283F851207B681B68E0
+:105500007A681268126822F040021A607B681B6891
+:105510007A6851687A68926811437A68D268114350
+:105520007A68126911437A68526911437A689269FC
+:1055300002F4007211437A68D26911437A68126AE0
+:1055400011437A68926A0A431A607B681B687A681A
+:105550009269120C02F004017A68526A0A435A6096
+:105560007B681B687A68D26A1A617B681B687A68F4
+:105570001268D26922F40062DA617B6800225A65FF
+:105580007B68012283F85120002318460837BD4666
+:1055900080BD00BF80B487B000AFF860B9607A60AA
+:1055A0007B8000237B61FB6893F85130DBB27B6129
+:1055B0007B69012B0BD0FB685B68B3F5827F73D1ED
+:1055C000FB689B68002B6FD17B69222B6CD1BB6879
+:1055D000002B05D07B68002B02D07B88002B01D1EB
+:1055E000012362E0FB6893F85030012B01D10223C4
+:1055F0005BE0FB68012283F85020FB6893F8513090
+:10560000DBB2222B03D0FB68322283F85120FB68E7
+:1056100000225A65FB68284ADA64FB68BA681A6394
+:10562000FB687A889A86FB687A88DA86FB68234A60
+:105630009A64FB687A689A63FB687A889A87FB6841
+:105640007A88DA87FB689B6AB3F5005F0FD1FB6845
+:105650001B68FA681268126822F400521A60FB682C
+:105660001B68FA681268126842F400521A60FB68FC
+:105670001B68FA681268526842F0E0025A60FB68E0
+:10568000002283F85020FB681B681B6803F040036E
+:10569000002B07D1FB681B68FA681268126842F099
+:1056A00040021A60002300E0022318461C37BD4662
+:1056B0005DF8047B704700BF51590008FD5A00088F
+:1056C00080B588B000AF78600023FB610023BB6128
+:1056D00000237B617B681B689B6803F00103002B40
+:1056E00014BF01230023DBB2FB617B681B685B688E
+:1056F00003F04003002B14BF01230023DBB2BB6186
+:105700007B681B689B6803F04003002B14BF0123D8
+:105710000023DBB27B61FB69002B0AD0BB69002B45
+:1057200007D07B69002B04D17B689B6C7868984715
+:105730008CE07B681B689B6803F00203002B14BF9E
+:1057400001230023DBB2FB617B681B685B6803F00D
+:105750008003002B14BF01230023DBB2BB61FB6974
+:10576000002B07D0BB69002B04D07B68DB6C78680A
+:1057700098476BE07B681B685B6803F02003002B95
+:1057800064D07B681B689B6803F01003002B0AD071
+:105790007B685B6D43F002027B685A657B681B681F
+:1057A0006FF010029A607B681B689B6803F020030F
+:1057B000002B12D07B685B6D43F001027B685A6559
+:1057C0007B681B689B683B617B681B687A68126812
+:1057D000126822F040021A603B697B681B689B6874
+:1057E00003F04003002B14D07B6893F85130DBB2F8
+:1057F000122B0ED07B685B6D43F004027B685A6508
+:105800007B681B68DB68FB607B681B689B68FB60D0
+:10581000FB687B681B689B6803F48073002B0AD0CD
+:105820007B685B6D43F008027B685A657B681B6888
+:105830009B68BB60BB687B685B6D002B06D07B6898
+:10584000012283F851207868FBF7D4FC2037BD464D
+:1058500080BD00BF80B483B000AF78600C37BD4618
+:105860005DF8047B704700BF80B483B000AF786000
+:105870000C37BD465DF8047B704700BF80B584B02F
+:1058800000AF7860786802210022022300F066F9F8
+:105890000346002B05D07B685B6D43F020027B68DC
+:1058A0005A657B681B687A681268526822F0800229
+:1058B0005A607B681B685B6803F04003002B44D18F
+:1058C0007B681B687A681268526822F020025A606E
+:1058D000786880210122022300F040F90346002B62
+:1058E00005D07B685B6D43F020027B685A657B685E
+:1058F0009B68002B08D17B681B68DB68FB607B68BA
+:105900001B689B68FB60FB687B685B6D002B15D197
+:105910007B6893F85130DBB2322B07D17B680122D0
+:1059200083F851207868FBF703FA0EE07B680122C8
+:1059300083F851207868FFF78DFF06E07B6801222D
+:1059400083F851207868FBF755FC1037BD4680BDC1
+:1059500080B582B000AF78607B68DB68002B09D12E
+:105960007B681A687B681B6B581C796808631B7816
+:10597000D3600AE07B681B687A68126B1288DA6071
+:105980007B681B6B9A1C7B681A637B68DB8E013B10
+:105990009AB27B68DA867B68DB8E002B0FD17B683E
+:1059A0009B6AB3F5005F07D17B681B687A68126851
+:1059B000126842F480521A607868FFF75FFF083778
+:1059C000BD4680BD80B584B000AF78607B689B6ABF
+:1059D000B3F5005F40D1786801210022022300F076
+:1059E000BDF80346002B05D07B685B6D43F02002B9
+:1059F0007B685A657B681B68DB689BB2FB81FB890F
+:105A0000786801210122022300F0A8F80346002B48
+:105A100005D07B685B6D43F020027B685A657B682C
+:105A20001B689B6803F01003002B15D07B685B6D2F
+:105A300043F002027B685A657B681B687A681268CB
+:105A4000126822F400521A607B681B687A68126838
+:105A5000126842F400521A607B681B687A68126808
+:105A6000526822F040025A607B681B685B6803F052
+:105A70008003002B3FD17B681B687A6812685268EC
+:105A800022F020025A607B685B68B3F5827F11D1F7
+:105A90007B689B68B3F5004F04D07B689B68B3F5C7
+:105AA000806F07D17B681B687A681268126822F0E1
+:105AB00040021A607B685B6D002B15D17B6893F800
+:105AC0005130DBB2322B07D17B68012283F85120A1
+:105AD0007868FBF72DF90EE07B68012283F85120EE
+:105AE0007868FFF7C1FE06E07B68012283F8512049
+:105AF0007868FBF77FFB1037BD4680BD80B582B06C
+:105B000000AF78607B68DB68002B0AD17B689B6BF9
+:105B1000591C7A6891637A681268D268D2B21A7096
+:105B20000BE07B689B6B7A681268D26892B21A802D
+:105B30007B689B6B9A1C7B689A637B68DB8F013B5D
+:105B40009AB27B68DA877B68DB8F002B02D178689A
+:105B5000FFF738FF0837BD4680BD00BF80B586B06F
+:105B600000AFF860B9603B601346FB7100237B61B6
+:105B700001F0F4FF7861FB79002B47D13DE03B68F1
+:105B8000B3F1FF3F39D03B68002B07D001F0E6FFAF
+:105B900002467B69D21A3B689A422ED9FB681B6881
+:105BA000FA681268526822F0E0025A60FB681B68CB
+:105BB000FA681268126822F040021A60FB689B6A59
+:105BC000B3F5005F0FD1FB681B68FA6812681268B2
+:105BD00022F400521A60FB681B68FA6812681268A7
+:105BE00042F400521A60FB68012283F85120FB68DE
+:105BF000002283F85020032350E0FB681B689A685A
+:105C0000BB681A40BB689A42B9D146E03DE03B68A8
+:105C1000B3F1FF3F39D03B68002B07D001F09EFF66
+:105C200002467B69D21A3B689A422ED9FB681B68F0
+:105C3000FA681268526822F0E0025A60FB681B683A
+:105C4000FA681268126822F040021A60FB689B6AC8
+:105C5000B3F5005F0FD1FB681B68FA681268126821
+:105C600022F400521A60FB681B68FA681268126816
+:105C700042F400521A60FB68012283F85120FB684D
+:105C8000002283F85020032308E0FB681B689A6811
+:105C9000BB681A40BB689A42B9D00023184618372F
+:105CA000BD4680BD80B594B000AF78600023FB6432
+:105CB0007B681B6803F00103002B47D09D4B9B685A
+:105CC00003F00C03042B0BD09A4B9B6803F00C03DE
+:105CD000082B07D1974B5B6803F48003002B01D09E
+:105CE0000123BBE1944B00221A7001F037FFF864E6
+:105CF00009E001F033FF0246FB6CD31AB3F5FA7FDB
+:105D000001D90323AAE18B4B1B6803F40033002B5A
+:105D1000EFD1894A7B685B68DBB213707B685B6894
+:105D2000002B13D001F01AFFF86409E001F016FF10
+:105D30000246FB6CD31AB3F5FA7F01D903238DE138
+:105D40007C4B1B6803F40033002BEFD07B681B688F
+:105D500003F00203002B61D0764B9B6803F00C0329
+:105D6000002B0BD0734B9B6803F00C03082B0CD15A
+:105D7000704B5B6803F48003002B06D17B68DB6803
+:105D8000012B01D0012369E130E07B68DB68002B47
+:105D900016D06A4B01221A6001F0E0FEF86408E0B8
+:105DA00001F0DCFE0246FB6CD31A642B01D90323FD
+:105DB00054E1604B1B6803F00203002BF0D015E0A8
+:105DC0005E4B00221A6001F0C9FEF86408E001F0A1
+:105DD000C5FE0246FB6CD31A642B01D903233DE1B7
+:105DE000544B1B6803F00203002BF0D15148514B78
+:105DF0001B6823F0F8027B681B69F821B964B96C51
+:105E000091FAA1F17964796C3964396CB1FA81F154
+:105E1000F963F96BC9B28B40134303607B681B685D
+:105E200003F00803002B30D07B685B69002B16D091
+:105E3000434B01221A6001F091FEF86408E001F082
+:105E40008DFE0246FB6CD31A642B01D9032305E1B6
+:105E5000384B5B6F03F00203002BF0D015E0384B9A
+:105E600000221A6001F07AFEF86408E001F076FE84
+:105E70000246FB6CD31A642B01D90323EEE02D4BB1
+:105E80005B6F03F00203002BF0D17B681B6803F00B
+:105E90000403002B60D0274A264B1B6C43F0805331
+:105EA0001364284A274B1B6843F48073136001F086
+:105EB00055FEF86408E001F051FE0246FB6CD31A6F
+:105EC000642B01D90323C9E01E4B1B6803F48073C4
+:105ED000002BF0D01C4B00221A7001F03FFEF8643A
+:105EE0000AE001F03BFE0246FB6CD31A41F2883215
+:105EF000934201D90323B1E00E4B1B6F03F0020361
+:105F0000002BEED1104A7B689B68DBB213707B6874
+:105F10009B68002B20D001F021FEF86416E001F010
+:105F20001DFE0246FB6CD31A41F2883293420DD912
+:105F3000032393E000380240023802400000474249
+:105F4000800E47420070004070380240454B1B6F86
+:105F500003F00203002BE2D07B689B69002B7CD00E
+:105F6000404B9B6803F00C03082B74D03E4B00227F
+:105F70001A6001F0F3FDF86408E001F0EFFD02465D
+:105F8000FB6CD31A642B01D9032367E0354B1B68E4
+:105F900003F00073002BF0D17B689B69022B5CD16E
+:105FA00030487B681A6A7B685B6A47F6C071B963E0
+:105FB000B96B91FAA1F17963796B3963396BB1FAF5
+:105FC00081F1F962F96AC9B28B401A437B689B6A16
+:105FD0005B08013B4FF44031B962B96A91FAA1F113
+:105FE0007962796A3962396AB1FA81F1F961F969DC
+:105FF000C9B28B401A437B68DB691A437B68DB6A52
+:106000004FF07061B961B96991FAA1F1796179696B
+:1060100039613969B1FA81F1F960F968C9B28B4027
+:10602000134343F0005343600F4B01221A6001F009
+:1060300095FDF86408E001F091FD0246FB6CD31A6F
+:10604000642B01D9032309E0064B1B6803F000739E
+:10605000002BF0D001E0012300E000231846503768
+:10606000BD4680BD003802406000474280B584B024
+:1060700000AF786039600023FB60A64B1B6803F01B
+:106080000F023B689A4280F09080A24B3A68D2B2ED
+:106090001A70A04B1B6803F00F023B689A4201D0B4
+:1060A000012333E17B681B6803F00203002B08D057
+:1060B0009949994B9B6823F0F0027B689B681343D6
+:1060C0008B607B681B6803F00103002B00F0FB80F2
+:1060D0007B685B68012B07D18F4B1B6803F400338F
+:1060E000002B15D1012311E17B685B68022B07D1DE
+:1060F000894B1B6803F00073002B09D1012305E1D4
+:10610000854B1B6803F00203002B01D10123FDE046
+:106110008149814B9B6823F003027B685B681343D2
+:106120008B6001F01BFDF8607B685B68012B12D16E
+:106130000AE001F013FD0246FB68D31A41F28832EF
+:10614000934201D90323E1E0734B9B6803F00C03F6
+:10615000042BEED1B7E07B685B68022B12D10AE01A
+:1061600001F0FCFC0246FB68D31A41F288329342EC
+:1061700001D90323CAE0684B9B6803F00C03082B8A
+:10618000EED1A0E00AE001F0E9FC0246FB68D31A78
+:1061900041F28832934201D90323B7E05E4B9B68FA
+:1061A00003F00C03002BEED18DE07B681B6803F03D
+:1061B0000203002B08D05849574B9B6823F0F0028C
+:1061C0007B689B6813438B607B681B6803F001034B
+:1061D000002B6BD07B685B68012B07D14E4B1B6893
+:1061E00003F40033002B15D101238FE07B685B683B
+:1061F000022B07D1484B1B6803F00073002B09D119
+:10620000012383E0444B1B6803F00203002B01D100
+:1062100001237BE04049404B9B6823F003027B68ED
+:106220005B6813438B6001F099FCF8607B685B68E6
+:10623000012B12D10AE001F091FC0246FB68D31A4F
+:1062400041F28832934201D903235FE0324B9B68CD
+:1062500003F00C03042BEED128E07B685B68022B73
+:1062600012D10AE001F07AFC0246FB68D31A41F22F
+:106270008832934201D9032348E0274B9B6803F0FF
+:106280000C03082BEED111E00AE001F067FC024696
+:10629000FB68D31A41F28832934201D9032335E0D7
+:1062A0001D4B9B6803F00C03002BEED1194B3A6891
+:1062B000D2B21A70174B1B6803F00F023B689A4268
+:1062C00001D0012322E07B681B6803F00403002B4C
+:1062D00008D01149104B9B6823F4E0527B68DB68BF
+:1062E00013438B607B681B6803F00803002B09D005
+:1062F0000949094B9B6823F460427B681B69DB00FA
+:1063000013438B60002001F005FC00231846103772
+:10631000BD4680BD003C02400038024080B491B0D0
+:1063200000AF00237B630023FB6300233B63002358
+:10633000BB633D4B9B6803F00C03042B06D0082B7A
+:1063400007D0002B66D1394BBB6366E0384BBB638B
+:1063500063E0354B5B6803F03F037B63324B5B6864
+:1063600003F48003002B1CD0314A7B6BB2FBF3F2A9
+:106370002D4B596847F6C0730B4047F6C071F96260
+:10638000F96A91FAA1F1B962B96A7962796AB1FAE6
+:1063900081F13962396AC9B2CB4003FB02F3FB6376
+:1063A0001BE0224A7B6BB2FBF3F21F4B596847F6A6
+:1063B000C0730B4047F6C071F961F96991FAA1F118
+:1063C000B961B96979617969B1FA81F1396139697C
+:1063D000C9B2CB4003FB02F3FB63134B5B6803F4CE
+:1063E00040334FF44032FA60FA6892FAA2F2BA608F
+:1063F000BA687A607A68B2FA82F23A603A68D2B2DF
+:10640000D34001335B003B63FA6B3B6BB2FBF3F3AE
+:10641000BB6302E0054BBB6300BFBB6B1846443750
+:10642000BD465DF8047B7047003802400024F4004C
+:1064300000127A0080B584B000AFFFF76FFF01460D
+:106440000F4B9B6803F0F003F022FA60FA6892FAAF
+:10645000A2F2BA60BA687A607A68B2FA82F23A60F6
+:106460003A68D2B2D340074AD35C21FA03F3064A12
+:106470001360054B1B6818461037BD4680BD00BF32
+:10648000003802406C7E0008DC00002080B485B03B
+:1064900000AF78600B46FB7013463B800023FB7314
+:1064A0000023BB607B681B685B6ABB60FB78002BCA
+:1064B00008D17B681B683A8812041146BA680A43FF
+:1064C0009A6229E07B681B689B6A1B0CBA681344BC
+:1064D000BB600023FB730DE07B681A68FB7B4033D5
+:1064E0009B0013445B681B0CBA681344BB60FB7BC6
+:1064F0000133FB73FA7BFB78013B9A42ECDB7B6850
+:106500001968FB78013B3A8812041046BA680243C6
+:1065100040339B000B445A60002318461437BD4695
+:106520005DF8047B704700BF80B483B000AF786033
+:106530000B467B807B681B687A885A62002318466A
+:106540000C37BD465DF8047B704700BFF0B58FB0D7
+:106550000AAF78600023FB607B68002B01D1012328
+:10656000F7E07B68032283F87D237868F9F794FECF
+:106570007B681B681846FDF7DFFD7B68D3F800E0F9
+:106580007E686D4606F110040FCC0FC50FCC0FC509
+:1065900023682B60331D0ECB7046FDF769FD7B68C9
+:1065A0001B6818460021FDF7D9FD0023FB604CE075
+:1065B0007968FA681346DB009B1A9B000B44303362
+:1065C00001225A71FB68D8B27968FA681346DB0079
+:1065D0009B1A9B000B44303302461A71FB6898B239
+:1065E0007968FA681346DB009B1A9B000B44303332
+:1065F00002465A817968FA681346DB009B1A9B00B1
+:106600000B4430330022DA717968FA681346DB00F4
+:106610009B1A9B000B44383300225A607968FA6851
+:106620001346DB009B1A9B000B44383300229A6010
+:106630007968FA681346DB009B1A9B000B444033D1
+:1066400000229A60FB680133FB60FB680E2BAFD918
+:106650000023FB605AE07968FA681346DB009B1A56
+:106660009B000B4403F5EC7300225A70FB68D8B210
+:106670007968FA681346DB009B1A9B000B4403F50C
+:10668000EC7302461A70FB6898B27968FA68134690
+:10669000DB009B1A9B000B44303302465A81796819
+:1066A000FA681346DB009B1A9B000B4403F5EC735E
+:1066B0000022DA707968FA681346DB009B1A9B00A7
+:1066C0000B4403F5F07300221A607968FA681346E8
+:1066D000DB009B1A9B000B4403F5F07300225A6009
+:1066E0007968FA681346DB009B1A9B000B4403F59C
+:1066F000F47300225A607B681A68FB6840339B0081
+:10670000134400225A60FB680133FB60FB680E2BC8
+:10671000A1D97B68D3F800E07E686D4606F11004CD
+:106720000FCC0FC50FCC0FC523682B60331D0ECBCC
+:106730007046FDF73BFD7B68012283F87D237B6873
+:10674000002283F87C237B681B681846FEF75AFDFD
+:10675000002318461437BD46F0BD00BF80B582B097
+:1067600000AF78607B6893F87C33012B01D1022362
+:1067700012E07B68012283F87C237B681B68184643
+:10678000FEF728FD7B681B681846FDF7C3FC7B6895
+:10679000002283F87C23002318460837BD4680BDBD
+:1067A00080B582B000AF78607B6893F87C33012BB2
+:1067B00001D1022317E07B68012283F87C237B68E8
+:1067C0001B681846FDF7B8FC7B681B681846FEF787
+:1067D00097FC7B681B681846FEF714FD7B68002257
+:1067E00083F87C23002318460837BD4680BD00BFD0
+:1067F00080B58AB000AF78607B681B68BB610023FE
+:106800007B6200233B6200237B610023FB6100234A
+:106810003B610023FB607B681B681846FEF796FD12
+:106820000346002B40F092837B681B681846FEF7F6
+:1068300001FD0346002B00D188E37B681B681846E6
+:10684000FEF7F8FC034603F00203002B03D07B683D
+:106850001B6802225A617B681B681846FEF7EAFC37
+:10686000034603F40023002B00F0B3800023FB61F8
+:106870007B681B681846FEF7F3FC3862A5E03B6AAC
+:1068800003F00103002B00F09A807B681A68FB6913
+:10689000DBB210461946FEF713FD78617B6903F001
+:1068A0000103002B6CD0FB695A01BB69134403F54B
+:1068B00030631A46012393607B681B69012B3CD12E
+:1068C0007968FA691346DB009B1A9B000B4403F5B9
+:1068D000F0731A68FB695901BB690B4403F5306317
+:1068E0001B69C3F31203D11A7868FA691346DB00F7
+:1068F0009B1A9B00034403F5F87319607968FA69E1
+:106900001346DB009B1A9B000B4403F5F073596898
+:106910007868FA691346DB009B1A9B00034403F571
+:10692000F0731B6819447868FA691346DB009B1AF8
+:106930009B00034403F5F0735960FB69DBB2786890
+:106940001946F9F7F1FC7B681B69012B18D1FB692B
+:10695000002B15D17968FA691346DB009B1A9B005E
+:106960000B4403F5F4735B68002B09D17B681A684C
+:106970007B6803F56073104601211A46FEF72AFD75
+:106980007B6903F00803002B0BD07868F9F7BAFC99
+:10699000FB695A01BB69134403F530631A460823A7
+:1069A00093607B6903F01003002B08D0FB695A0148
+:1069B000BB69134403F530631A4610239360FB69E7
+:1069C0000133FB613B6A5B083B623B6A002B7FF44F
+:1069D00056AF7B681B681846FEF72CFC034603F491
+:1069E0008023002B00F0C4807B681B681846FEF7EC
+:1069F0004FFC38620023FB61B6E03B6A03F0010301
+:106A0000002B00F0AB807B681A68FB69DBB2104694
+:106A10001946FEF771FC78617B6903F00103002BD6
+:106A20005BD0FB69012202FA03F33B61BB6903F50A
+:106A300000631946BB6903F500635A6B3B69DB438E
+:106A400013404B63FB695A01BB69134403F51063A0
+:106A50001A46012393607B681B69012B1BD179685F
+:106A6000FA691346DB009B1A9B000B443833996884
+:106A70007868FA691346DB009B1A9B00034438339D
+:106A80005B6819447868FA691346DB009B1A9B001F
+:106A9000034438339960FB69DBB278681946F9F72B
+:106AA0005FFC7B681B69012B17D1FB69002B14D19C
+:106AB0007968FA691346DB009B1A9B000B4440334C
+:106AC0009B68002B09D17B681A687B6803F56073AB
+:106AD000104601211A46FEF77DFC7B6903F008038E
+:106AE000002B08D0FB695A01BB69134403F51063FE
+:106AF0001A46082393607B6903F01003002B08D02B
+:106B0000FB695A01BB69134403F510631A4610234D
+:106B100093607B6903F04003002B08D0FB695A01A6
+:106B2000BB69134403F510631A46402393607B69E5
+:106B300003F00203002B08D0FB695A01BB69134420
+:106B400003F510631A46022393607B6903F0800308
+:106B5000002B03D07868F96900F076FCFB690133FB
+:106B6000FB613B6A5B083B623B6A002B7FF445AFED
+:106B70007B681B681846FEF75DFB0346002B12DAA4
+:106B8000BB6903F500631A46BB6903F500635B68E4
+:106B900023F0010353607868F9F74CFC7B681B68AD
+:106BA0004FF000425A617B681B681846FEF742FBB3
+:106BB000034603F40063002B0FD0BB6903F50063A9
+:106BC0009B6803F00103002B02D07868F9F718FCEA
+:106BD0007B681B684FF400625A617B681B6818462B
+:106BE000FEF728FB034603F48053002B00F090804F
+:106BF000BB6903F500631A46BB6903F500635B6874
+:106C000023F0010353607B681B6818460021FDF7E1
+:106C1000F9FB00237B6214E07B6A5A01BB691344D1
+:106C200003F510631A46FF2393607B6A5A01BB6920
+:106C3000134403F530631A46FF2393607B6A0133E4
+:106C40007B627B685A687B6A9A42E5D8BB6903F528
+:106C500000631A464FF0FF339361BB6903F500638D
+:106C60001A46BB6903F50063DB6943F00113D36186
+:106C70007B68DB6A002B18D0BB6903F500631A46FA
+:106C8000BB6903F50063D3F8843043F00B03C2F80B
+:106C90008430BB6903F500631A46BB6903F50063E2
+:106CA0005B6C43F00B03536415E0BB6903F50063B1
+:106CB0001A46BB6903F500635B6943F00B0353613C
+:106CC000BB6903F500631A46BB6903F500631B69E2
+:106CD00043F00B031361BB6903F500631A46BB69FC
+:106CE00003F500631B6823F4FE6313607B68196877
+:106CF0007B681B69DAB27B6803F56073084611464E
+:106D00001A46FEF767FB7B681B684FF480525A6196
+:106D10007B681B681846FEF78DFA034603F40053A0
+:106D2000002B3AD07B681B681846FEF71DFB7B687A
+:106D30001B687A681268D26822F47052DA607B6845
+:106D40001B681846FDF7BEFB0346002B0FD17B687E
+:106D50000022DA607B684FF400725A617B681B681E
+:106D60007A681268D26842F41052DA600DE07B68EB
+:106D70000322DA607B6840225A617B681B687A686C
+:106D80001268D26842F4A052DA607868F9F710FB12
+:106D90007B681B684FF400525A617B681B68184679
+:106DA000FEF748FA034603F01003002B63D07B681C
+:106DB0001B687A681268926922F010029A61BB69B6
+:106DC0001B6AFB60FB6803F00F021346DB009B1A93
+:106DD0009B0003F5EC737A681344BB60FB6803F413
+:106DE000F0135B0C022B26D1FA6847F6F0731340C0
+:106DF000002B38D0BB68D968FA6847F6F0731340A7
+:106E00001B099BB2B8691A46FEF770F8BB68DA68CE
+:106E1000F96847F6F0730B401B091A44BB68DA6047
+:106E2000BB689A69F96847F6F0730B401B091A446E
+:106E3000BB689A6117E0FB6803F4F0135B0C062B48
+:106E400011D17B6803F56073B86919460822FEF713
+:106E50004DF8BB689A69F96847F6F0730B401B0957
+:106E60001A44BB689A617B681B687A6812689269E9
+:106E700042F010029A617B681B681846FEF7DAF947
+:106E8000034603F00803002B06D07868F9F782FA6E
+:106E90007B681B6808225A617B681B681846FEF7EE
+:106EA000C9F9034603F48013002B0AD0FB69DBB257
+:106EB00078681946F9F7EAFA7B681B684FF4801284
+:106EC0005A617B681B681846FEF7B4F9034603F461
+:106ED0000013002B0AD0FB69DBB278681946F9F77A
+:106EE000C3FA7B681B684FF400125A617B681B6809
+:106EF0001846FEF79FF9034603F08043002B07D0A6
+:106F00007868F9F7D5FA7B681B684FF080425A61C0
+:106F10007B681B681846FEF78DF9034603F00403EF
+:106F2000002B13D07B681B685B68FB60FB6803F079
+:106F30000403002B02D07868F9F7C8FA7B681B6855
+:106F40007A6812685168FA680A435A602837BD4661
+:106F500080BD00BF80B582B000AF78600B46FB708B
+:106F60007B6893F87C33012B01D102230FE07B680F
+:106F7000012283F87C237B681A68FB781046194647
+:106F8000FEF702F97B68002283F87C230023184671
+:106F90000837BD4680BD00BF80B584B000AF7860C3
+:106FA000084611461A460346FB700B463B801346C3
+:106FB000BB700023FB72FB785BB2002B0CDAFB7812
+:106FC00003F07F021346DB009B1A9B0030337A6884
+:106FD00013440433FB600BE0FB7803F07F0213469D
+:106FE000DB009B1A9B0003F5EC737A681344FB608B
+:106FF000FB7803F07F03DAB2FB681A70FB78DB09D9
+:10700000DBB21A46FB685A703A88FB689A60FB68E4
+:10701000BA78DA70FB685B78002B04D0FB681B78C9
+:107020009AB2FB68DA80BB78022B02D1FB6800229F
+:107030001A717B6893F87C33012B01D102230EE097
+:107040007B68012283F87C237B681B681846F968FB
+:10705000FDF76EFA7B68002283F87C23FB7A1846E2
+:107060001037BD4680BD00BF80B584B000AF7860EA
+:107070000B46FB70FB785BB2002B0CDAFB7803F05D
+:107080007F021346DB009B1A9B0030337A6813445F
+:107090000433FB600BE0FB7803F07F021346DB0058
+:1070A0009B1A9B0003F5EC737A681344FB60FB7832
+:1070B00003F07F03DAB2FB681A70FB78DB09DBB2FE
+:1070C0001A46FB685A707B6893F87C33012B01D118
+:1070D00002230EE07B68012283F87C237B681B6817
+:1070E0001846F968FDF7AEFA7B68002283F87C2326
+:1070F000002318461037BD4680BD00BF80B586B05E
+:1071000000AFF8607A603B600B46FB72FB7A03F0DD
+:107110007F021346DB009B1A9B0003F5EC73FA68B1
+:1071200013447B617B697A68DA607B693A685A61EB
+:107130007B6900229A617B6900225A70FB7A03F016
+:107140007F03DAB27B691A70FB681B69012B02D1DD
+:107150007A687B691A61FB6893F87C33012B01D153
+:10716000022322E0FB68012283F87C23FB7A03F0F0
+:107170007F03002B0AD1FB681A68FB681B69DBB22E
+:10718000104679691A46FDF71BFD09E0FB681A688D
+:10719000FB681B69DBB2104679691A46FDF7CEFA27
+:1071A000FB68002283F87C23002318461837BD466D
+:1071B00080BD00BF80B483B000AF78600B46FB7029
+:1071C000FB7803F07F0279681346DB009B1A9B0073
+:1071D0000B4403F5F8731B689BB218460C37BD4689
+:1071E0005DF8047B704700BF80B586B000AFF860E3
+:1071F0007A603B600B46FB72FB7A03F07F0213461A
+:10720000DB009B1A9B003033FA68134404337B6124
+:107210007B697A68DA607B693A685A617B69002227
+:107220009A617B6901225A70FB7A03F07F03DAB21C
+:107230007B691A70FB681B69012B02D17A687B6934
+:107240001A61FB6893F87C33012B01D1022322E001
+:10725000FB68012283F87C23FB7A03F07F03002B79
+:107260000AD1FB681A68FB681B69DBB210467969B2
+:107270001A46FDF7A5FC09E0FB681A68FB681B6964
+:10728000DBB2104679691A46FDF758FAFB6800220E
+:1072900083F87C23002318461837BD4680BD00BF05
+:1072A00080B584B000AF78600B46FB70FB785BB2B2
+:1072B000002B0CDAFB7803F07F021346DB009B1AED
+:1072C0009B0030337A6813440433FB6009E0FA789A
+:1072D0001346DB009B1A9B0003F5EC737A6813449A
+:1072E000FB60FB6801229A70FB7803F07F03DAB23F
+:1072F000FB681A70FB78DB09DBB21A46FB685A7030
+:107300007B6893F87C33012B01D1022320E07B685A
+:10731000012283F87C237B681B681846F968FDF717
+:107320000FFEFB7803F07F03002B0CD17B681968FC
+:107330007B681B69DAB27B6803F560730846114607
+:107340001A46FEF747F87B68002283F87C23002367
+:1073500018461037BD4680BD80B584B000AF786058
+:107360000B46FB70FB785BB2002B0CDAFB7803F06A
+:107370007F021346DB009B1A9B0030337A6813446C
+:107380000433FB6009E0FA781346DB009B1A9B008C
+:1073900003F5EC737A681344FB60FB6800229A7073
+:1073A000FB7803F07F03DAB2FB681A70FB78DB0925
+:1073B000DBB21A46FB685A707B6893F87C33012B6A
+:1073C00001D102230EE07B68012283F87C237B68D5
+:1073D0001B681846F968FDF725FE7B68002283F8D4
+:1073E0007C23002318461037BD4680BD80B582B08F
+:1073F00000AF78600B46FB707B6893F87C33012B01
+:1074000001D102231BE07B68012283F87C23FB78F7
+:107410005BB2002B09DA7B681A68FB7803F07F0304
+:1074200010461946FCF7EEFF04E07B681B6818461F
+:10743000FDF70EF87B68002283F87C2300231846B2
+:107440000837BD4680BD00BF90B58BB002AF7860F5
+:1074500039607B681B687B610023FB6100233B6113
+:107460003A681346DB009B1A9B0030337A6813445A
+:107470000433FB60FB685A69FB689B69D31AFB61A4
+:10748000FA69FB689B689A4202D9FB689B68FB61BA
+:10749000FB690333002B00DA03339B10BB612EE042
+:1074A000FB68D9683B68DAB2FB699CB27B681B69F0
+:1074B000DBB2009378692346FDF7E0FCFB68DA68ED
+:1074C000FB691A44FB68DA60FB689A69FB691A4435
+:1074D000FB689A61FB685A69FB689B69D31AFB6178
+:1074E000FA69FB689B689A4202D9FB689B68FB615A
+:1074F000FB690333002B00DA03339B10BB613B684D
+:107500005A017B69134403F510639B699AB2BB6906
+:107510009A4209D3FB689A69FB685B699A4203D275
+:10752000FB685B69002BBBD1FB69002B13DC3B685C
+:10753000012202FA03F33B617B6903F500631946FC
+:107540007B6903F500635A6B3B69DB4313404B6374
+:107550007868F8F7C9FF002318462437BD4690BD68
+:1075600080B487B000AF786039600023FB600023EF
+:10757000BB6000233B6100237B6165E17B690122E5
+:1075800002FA03F3FB603B681A68FB681340BB60B8
+:10759000BA68FB689A4240F054813B685B68022BF2
+:1075A00003D03B685B68122B22D17B69DA087B68C9
+:1075B000083253F822303B617B6903F007039B00DC
+:1075C0001A460F239340DB433A6913403B613B6803
+:1075D0001B697A6902F00702920093403A691343EB
+:1075E0003B617B69DA087B680832396943F822100D
+:1075F0007B681B683B617B695B001A4603239340F1
+:10760000DB433A6913403B613B685B6803F003036B
+:107610007A69520093403A6913433B617B683A6947
+:107620001A603B685B68012B0BD03B685B68022BE0
+:1076300007D03B685B68112B03D03B685B68122B5B
+:107640002FD17B689B683B617B695B001A460323F3
+:107650009340DB433A6913403B613B68DB687A69DE
+:10766000520093403A6913433B617B683A699A60E0
+:107670007B685B683B617B69012202FA03F3DB43B1
+:107680003A6913403B613B685B6803F010031A09D9
+:107690007B6902FA03F33A6913433B617B683A69F9
+:1076A0005A607B68DB683B617B695B001A46032399
+:1076B0009340DB433A6913403B613B689B687A69BE
+:1076C000520093403A6913433B617B683A69DA6040
+:1076D0003B685B6803F08053002B00F0B2805F4A88
+:1076E0005E4B5B6C43F4804353645D4A7B699B084B
+:1076F000023352F823303B617B6903F003039B00A4
+:107700001A460F239340DB433A6913403B617B6881
+:10771000544A934231D07B68534A93422BD07B68C2
+:10772000524A934225D07B68514A93421FD07B68CE
+:10773000504A934219D07B684F4A934213D07B68DA
+:107740004E4A93420DD07B684D4A934207D07B68E6
+:107750004C4A934201D1082310E009230EE007238D
+:107760000CE006230AE0052308E0042306E00323D7
+:1077700004E0022302E0012300E000237A6902F022
+:107780000302920093403A6913433B6134497B6999
+:107790009B0802333A6941F823203B4B1B683B614D
+:1077A000BB68DB433A6913403B613B685B6803F4A9
+:1077B0008033002B03D03A69BB6813433B61324AE4
+:1077C0003B691360304B5B683B61BB68DB433A69E4
+:1077D00013403B613B685B6803F40033002B03D02C
+:1077E0003A69BB6813433B61274A3B695360264BA8
+:1077F0009B683B61BB68DB433A6913403B613B6874
+:107800005B6803F48013002B03D03A69BB68134311
+:107810003B611D4A3B6993601B4BDB683B61BB6866
+:10782000DB433A6913403B613B685B6803F4001338
+:10783000002B03D03A69BB6813433B61124A3B6992
+:10784000D3607B6901337B617B690F2B7FF696AE3A
+:107850001C37BD465DF8047B704700BF003802400E
+:1078600000380140000002400004024000080240CD
+:10787000000C0240001002400014024000180240B8
+:10788000001C024000200240003C014080B485B052
+:1078900000AF78607B6803F00703FB600C4BDB688C
+:1078A000BB60BA684FF6FF031340BB60FB681A0267
+:1078B000BB68134343F0BF6343F40033BB60044A27
+:1078C000BB68D3601437BD465DF8047B704700BFCA
+:1078D00000ED00E080B400AF044BDB6803F4E0632C
+:1078E0001B0A1846BD465DF8047B704700ED00E0BA
+:1078F00080B483B000AF0346FB71084997F90730A5
+:107900005B09FA7902F01F02012000FA02F241F845
+:1079100023200C37BD465DF8047B704700E100E092
+:1079200080B483B000AF03463960FB7197F907302C
+:10793000002B0BDA0D49FB7903F00F03043B3A6887
+:10794000D2B21201D2B20B441A7609E0084997F973
+:1079500007303A68D2B21201D2B20B4483F8002346
+:107960000C37BD465DF8047B704700BF00ED00E0BA
+:1079700000E100E080B489B000AFF860B9607A60DF
+:10798000FB6803F00703FB61FB69C3F10703042BEA
+:1079900028BF0423BB61FB690433062B02D9FB69B2
+:1079A000033B00E000237B61BB69012202FA03F381
+:1079B000013B1A46BB681A407B699A407B690121EA
+:1079C00001FA03F3013B19467B680B401343184649
+:1079D0002437BD465DF8047B704700BF80B483B098
+:1079E00000AF78607B68013BB3F1807F01D3012356
+:1079F0000AE0084A7B68013B5360064B00229A600C
+:107A0000044B07221A60002318460C37BD465DF868
+:107A1000047B704710E000E080B582B000AF786072
+:107A20007868FFF733FF0837BD4680BD80B586B064
+:107A300000AF0346B9607A60FB7300237B61FFF7F8
+:107A400049FF78617869B9687A68FFF793FF024661
+:107A500097F90F3018461146FFF762FF1837BD46F9
+:107A600080BD00BF80B582B000AF0346FB7197F9BF
+:107A700007301846FFF73CFF0837BD4680BD00BF02
+:107A800080B582B000AF78607868FFF7A7FF034643
+:107A900018460837BD4680BD80B483B000AF78601B
+:107AA0007B68042B06D1094A084B1B6843F004038A
+:107AB000136005E0054A054B1B6823F004031360BF
+:107AC0000C37BD465DF8047B704700BF10E000E056
+:107AD00080B500AF0E4A0E4B1B6843F40073136071
+:107AE0000B4A0B4B1B6843F480631360084A084B36
+:107AF0001B6843F4807313600320FFF78DFF0020A1
+:107B000000F008F8F9F772FF0023184680BD00BFA7
+:107B1000003C024080B582B000AF7860FEF78AFC7E
+:107B20000246064BA3FB02239B091846FFF7A8FF5A
+:107B3000002318460837BD4680BD00BFD34D6210F4
+:107B400080B400AF044B1B680133034A1360BD4689
+:107B50005DF8047B704700BF6401002080B400AF73
+:107B6000034B1B681846BD465DF8047B704700BF99
+:107B70006401002080B584B000AF78600023FB6012
+:107B8000FFF7ECFFF86000BFFFF7E8FF0246FB6875
+:107B9000D21A7B689A42F7D31037BD4680BD00BF2A
+:107BA00080B400AF124A124B1B6843F0010313600C
+:107BB0000F4B00229A600E4A0D4B1B6823F0847312
+:107BC00023F4803313600A4B0A4A5A60084A084B70
+:107BD0001B6823F480231360054B0022DA60064BF8
+:107BE0004FF000629A60BD465DF8047B704700BFAD
+:107BF000003802401030002400ED00E0DFF830D003
+:107C0000002103E00B4B5B58435004310A480B4BF7
+:107C100042189A42F6D30A4A02E0002342F8043B93
+:107C2000084B9A42F9D3FFF7BBFFF9F77FFD704786
+:107C300000C001207E7E00080000002044010020DA
+:107C400048010020100E0020FEE70000024B014614
+:107C5000186800F04FB800BF40010020024B0146F9
+:107C6000186800F003B800BF4001002030B50029BB
+:107C70003CD051F8042C0B1F1D49002AB8BF9B189B
+:107C80000A680C4612B95A600B6030BD93420DD29F
+:107C900019685818904201BF5A5852181A60426821
+:107CA00023605A6030BD994203D80A4651680029C2
+:107CB000F9D1146815199D420AD11B682344D018C4
+:107CC0008842136012D10868034413604B680CE0CB
+:107CD00002D90C23036030BD1C681819884201BF0B
+:107CE00008684968001918605960536030BD00BFCA
+:107CF0006C01002070B5CC1C24F0030408340C2C5B
+:107D000038BF0C24002C064603DA0C233360002015
+:107D100070BD8C42F9D3204A136810461946A1B1B0
+:107D20000A68121B0ED40B2A03D90A608B188C50D8
+:107D30001FE08B420BBF5A684A6802605A6018BF46
+:107D40000B4616E00B464968E9E7144D2B681BB952
+:107D5000304600F025F828603046214600F020F833
+:107D6000421C0346D1D0C51C25F0030585420AD12B
+:107D70001C6003F10B001A1D20F00700821A0AD0C4
+:107D80005142995070BD3046E91A00F009F80130AF
+:107D9000BBD02B46ECE770BD6C01002068010020D1
+:107DA00038B5064C002305460846236000F008F865
+:107DB000431C02D1236803B12B6038BD0C0E002098
+:107DC000044A05491368002B08BF0B46184410608D
+:107DD0001846704770010020100E0020008002023B
+:107DE0001F00000053544D202020202050726F644B
+:107DF000756374202020202020202020302E303158
+:107E000053544D3332204D6173732053746F72613C
+:107E10006765000053544D6963726F656C656374E8
+:107E2000726F6E6963730000303030303030303044
+:107E300030303141000000004D534320436F6E66E7
+:107E4000696700004D534320496E74657266616333
+:107E500065000000000000030080830000000000B7
+:107E6000000000000006000000000000000000000C
+:0E7E700001020304010203040607080943008F
+:107E7E0089010008AD010008F9010008D1010008D0
+:107E8E0021020008490200087102000812010002D6
+:107E9E000000004083042A57000201020301000083
+:107EAE0004030904293D0008B93D0008053E0008F9
+:107EBE000000000000000000713F0008913F000824
+:107ECE00000000000000000000000000B13F0008AC
+:107EDE00F13F0008114000083140000851400008F1
+:107EEE0009022000010104C0FA090400000208067C
+:107EFE00500507058102000200070501020002007D
+:107F0E0009022000010104C0320904000002080623
+:107F1E0050050705810240000007050102400000E0
+:107F2E0009072000010104C03209040000020806FE
+:107F3E0050050705810240000007050102400000C0
+:107F4E000A06000200000040010000000024F400B8
+:107F5E000000000000000000000000000000000013
+:107F6E000000000000000000000000000000000003
+:107F7E007C7E0008000000000000000000000000F1
+:107F8E0000000000000000000000000000000000E3
+:107F9E0000000000000000000000000000000000D3
+:107FAE0000000000000000000000000000000000C3
+:047FBE00E0000020BF
+:0400000508007BFD77
:00000001FF
diff --git a/Upstream/Debug/Upstream.map b/Upstream/Debug/Upstream.map
index 7590deb..6295972 100644
--- a/Upstream/Debug/Upstream.map
+++ b/Upstream/Debug/Upstream.map
@@ -19,46 +19,39 @@ Allocating common symbols
Common symbol size file
hUsbDeviceFS 0x224 Src/usb_device.o
-ReadStreamPacket 0x4 Src/downstream_interface_msc_mock.o
+ReadStreamPacket 0x4 Src/upstream_msc.o
+TemporaryIncomingPacketLength
+ 0x4 Src/upstream_spi.o
SCSI_ProcessCmd_hmsc
0x4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
-BlockStart 0x8 Src/downstream_interface_msc_mock.o
+BlockStart 0x8 Src/upstream_msc.o
SCSI_ProcessCmd_params
0x4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
errno 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o)
-hpcd_USB_OTG_FS 0x3b0 Src/usbd_config.o
-spiRxDmaHandle 0x50 Src/hal_msp.o
-ReadStreamBusy 0x1 Src/downstream_interface_msc_mock.o
-SentCommand 0x1 Src/downstream_spi.o
+hpcd_USB_OTG_FS 0x3b4 Src/usbd_config.o
+ReadStreamBusy 0x1 Src/upstream_msc.o
+SentCommand 0x1 Src/upstream_spi.o
GetCapacityCallback
- 0x4 Src/downstream_interface_msc_mock.o
-DownstreamInterfaceState
- 0x1 Src/downstream_spi.o
-BlockCount 0x4 Src/downstream_interface_msc_mock.o
-TestReadyCallback 0x4 Src/downstream_interface_msc_mock.o
+ 0x4 Src/upstream_msc.o
+UpstreamPacket1 0x208 Src/upstream_spi.o
+BlockCount 0x4 Src/upstream_msc.o
+TestReadyCallback 0x4 Src/upstream_msc.o
SCSI_ProcessCmd_lun
0x1 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
-DownstreamPacket1 0x20c Src/downstream_spi.o
SCSI_ProcessCmd_callback
0x4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
-ReceivePacketCallback
- 0x4 Src/downstream_spi.o
SCSI_ProcessCmd_pdev
0x4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
-DownstreamPacket0 0x20c Src/downstream_spi.o
CurrentWorkingPacket
- 0x4 Src/downstream_spi.o
+ 0x4 Src/upstream_spi.o
MSC_BOT_pdev 0x4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+UpstreamPacket0 0x208 Src/upstream_spi.o
GetStreamDataCallback
- 0x4 Src/downstream_interface_msc_mock.o
-SentCommandClass 0x1 Src/downstream_spi.o
+ 0x4 Src/upstream_msc.o
+SentCommandClass 0x1 Src/upstream_spi.o
MSC_BOT_hmsc 0x4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
-NextTxPacket 0x4 Src/downstream_spi.o
-ByteCount 0x4 Src/downstream_interface_msc_mock.o
-hspi1 0x58 Src/downstream_spi.o
-spiTxDmaHandle 0x50 Src/hal_msp.o
-PendingFreePacketCallback
- 0x4 Src/downstream_spi.o
+ByteCount 0x4 Src/upstream_msc.o
+Hspi1 0x58 Src/upstream_spi.o
USBD_StrDesc 0x200 Src/usbd_descriptors.o
Discarded input sections
@@ -193,13 +186,11 @@ Discarded input sections
.data 0x00000000 0x0 Src/usbd_config.o
.bss 0x00000000 0x0 Src/usbd_config.o
.text.HAL_PCD_MspDeInit
- 0x00000000 0x38 Src/usbd_config.o
+ 0x00000000 0x48 Src/usbd_config.o
.text.USBD_LL_DeInit
- 0x00000000 0x10 Src/usbd_config.o
- .text.USBD_LL_Stop
- 0x00000000 0x10 Src/usbd_config.o
+ 0x00000000 0x20 Src/usbd_config.o
.text.USBD_LL_Delay
- 0x00000000 0x8 Src/usbd_config.o
+ 0x00000000 0x14 Src/usbd_config.o
.debug_macro 0x00000000 0x868 Src/usbd_config.o
.debug_macro 0x00000000 0x2e Src/usbd_config.o
.debug_macro 0x00000000 0x28 Src/usbd_config.o
@@ -384,8 +375,396 @@ Discarded input sections
.debug_macro 0x00000000 0x1b6 Src/usb_device.o
.debug_macro 0x00000000 0x82 Src/usb_device.o
.debug_macro 0x00000000 0x160 Src/usb_device.o
- .debug_macro 0x00000000 0x22 Src/usb_device.o
+ .debug_macro 0x00000000 0x2e Src/usb_device.o
.debug_macro 0x00000000 0x34 Src/usb_device.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .text 0x00000000 0x0 Src/upstream_statemachine.o
+ .data 0x00000000 0x0 Src/upstream_statemachine.o
+ .bss 0x00000000 0x0 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x868 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x1a7 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x2e Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x28 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x3b Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x22 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x44 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x1c Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x1f7 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x2d Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x26 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0xd39 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x8861 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x43 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x2694 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x64 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0xa22 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x39f Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x15b Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x11e Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x130 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x27 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x272 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x5f Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x5d Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x133 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x217 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x2e Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x13a Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x5e Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x97 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x209 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x1df Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x109 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x125 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x58 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x35 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x9c Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x16 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x97 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x27a Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0xf6 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x10 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x52 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x16 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x43 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x180 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x10 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x22 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0xbd Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x16 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x16d Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x16 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x35 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x16 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x29 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x16 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x1b6 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x6a Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x2e Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x82 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x160 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x34 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .text 0x00000000 0x0 Src/upstream_spi.o
+ .data 0x00000000 0x0 Src/upstream_spi.o
+ .bss 0x00000000 0x0 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x868 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x1c Src/upstream_spi.o
+ .debug_macro 0x00000000 0x58 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x22 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x35 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x9c Src/upstream_spi.o
+ .debug_macro 0x00000000 0x16 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x4a Src/upstream_spi.o
+ .debug_macro 0x00000000 0x97 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x27a Src/upstream_spi.o
+ .debug_macro 0x00000000 0xf6 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x10 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x52 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x16 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x43 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x180 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x10 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x22 Src/upstream_spi.o
+ .debug_macro 0x00000000 0xbd Src/upstream_spi.o
+ .debug_macro 0x00000000 0x16 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x16d Src/upstream_spi.o
+ .debug_macro 0x00000000 0x16 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x35 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x16 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x29 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x16 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x2e Src/upstream_spi.o
+ .debug_macro 0x00000000 0x28 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x3b Src/upstream_spi.o
+ .debug_macro 0x00000000 0x1c Src/upstream_spi.o
+ .debug_macro 0x00000000 0x1f7 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x2d Src/upstream_spi.o
+ .debug_macro 0x00000000 0x26 Src/upstream_spi.o
+ .debug_macro 0x00000000 0xd39 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x8861 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x43 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x1a7 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x2694 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x57 Src/upstream_spi.o
+ .debug_macro 0x00000000 0xa22 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x39f Src/upstream_spi.o
+ .debug_macro 0x00000000 0x15b Src/upstream_spi.o
+ .debug_macro 0x00000000 0x11e Src/upstream_spi.o
+ .debug_macro 0x00000000 0x130 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x27 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x272 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x5f Src/upstream_spi.o
+ .debug_macro 0x00000000 0x5d Src/upstream_spi.o
+ .debug_macro 0x00000000 0x133 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x217 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x2e Src/upstream_spi.o
+ .debug_macro 0x00000000 0x13a Src/upstream_spi.o
+ .debug_macro 0x00000000 0x5e Src/upstream_spi.o
+ .debug_macro 0x00000000 0x97 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x209 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x1df Src/upstream_spi.o
+ .debug_macro 0x00000000 0x109 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x125 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x1b6 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x6a Src/upstream_spi.o
+ .debug_macro 0x00000000 0x2e Src/upstream_spi.o
+ .debug_macro 0x00000000 0x22 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .text 0x00000000 0x0 Src/upstream_msc.o
+ .data 0x00000000 0x0 Src/upstream_msc.o
+ .bss 0x00000000 0x0 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x868 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x1c Src/upstream_msc.o
+ .debug_macro 0x00000000 0x58 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x22 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x35 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x9c Src/upstream_msc.o
+ .debug_macro 0x00000000 0x16 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x4a Src/upstream_msc.o
+ .debug_macro 0x00000000 0x97 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x27a Src/upstream_msc.o
+ .debug_macro 0x00000000 0xf6 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x10 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x52 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x16 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x43 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x180 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x10 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x22 Src/upstream_msc.o
+ .debug_macro 0x00000000 0xbd Src/upstream_msc.o
+ .debug_macro 0x00000000 0x16 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x16d Src/upstream_msc.o
+ .debug_macro 0x00000000 0x16 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x35 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x16 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x29 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x16 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x2e Src/upstream_msc.o
+ .debug_macro 0x00000000 0x28 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x3b Src/upstream_msc.o
+ .debug_macro 0x00000000 0x1c Src/upstream_msc.o
+ .debug_macro 0x00000000 0x1f7 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x2d Src/upstream_msc.o
+ .debug_macro 0x00000000 0x26 Src/upstream_msc.o
+ .debug_macro 0x00000000 0xd39 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x8861 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x43 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x1a7 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x2694 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x57 Src/upstream_msc.o
+ .debug_macro 0x00000000 0xa22 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x39f Src/upstream_msc.o
+ .debug_macro 0x00000000 0x15b Src/upstream_msc.o
+ .debug_macro 0x00000000 0x11e Src/upstream_msc.o
+ .debug_macro 0x00000000 0x130 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x27 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x272 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x5f Src/upstream_msc.o
+ .debug_macro 0x00000000 0x5d Src/upstream_msc.o
+ .debug_macro 0x00000000 0x133 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x217 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x2e Src/upstream_msc.o
+ .debug_macro 0x00000000 0x13a Src/upstream_msc.o
+ .debug_macro 0x00000000 0x5e Src/upstream_msc.o
+ .debug_macro 0x00000000 0x97 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x209 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x1df Src/upstream_msc.o
+ .debug_macro 0x00000000 0x109 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x125 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x1b6 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x6a Src/upstream_msc.o
+ .debug_macro 0x00000000 0x2e Src/upstream_msc.o
+ .debug_macro 0x00000000 0x1c Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/main.o
.group 0x00000000 0x8 Src/main.o
.group 0x00000000 0x8 Src/main.o
.group 0x00000000 0x8 Src/main.o
@@ -451,33 +830,12 @@ Discarded input sections
.data 0x00000000 0x0 Src/main.o
.bss 0x00000000 0x0 Src/main.o
.debug_macro 0x00000000 0x868 Src/main.o
- .debug_macro 0x00000000 0x58 Src/main.o
- .debug_macro 0x00000000 0x22 Src/main.o
- .debug_macro 0x00000000 0x35 Src/main.o
- .debug_macro 0x00000000 0x9c Src/main.o
- .debug_macro 0x00000000 0x16 Src/main.o
- .debug_macro 0x00000000 0x4a Src/main.o
- .debug_macro 0x00000000 0x97 Src/main.o
- .debug_macro 0x00000000 0x27a Src/main.o
- .debug_macro 0x00000000 0xf6 Src/main.o
- .debug_macro 0x00000000 0x10 Src/main.o
- .debug_macro 0x00000000 0x52 Src/main.o
- .debug_macro 0x00000000 0x16 Src/main.o
- .debug_macro 0x00000000 0x43 Src/main.o
- .debug_macro 0x00000000 0x180 Src/main.o
- .debug_macro 0x00000000 0x10 Src/main.o
- .debug_macro 0x00000000 0x22 Src/main.o
- .debug_macro 0x00000000 0xbd Src/main.o
- .debug_macro 0x00000000 0x16 Src/main.o
- .debug_macro 0x00000000 0x16d Src/main.o
- .debug_macro 0x00000000 0x16 Src/main.o
- .debug_macro 0x00000000 0x35 Src/main.o
- .debug_macro 0x00000000 0x16 Src/main.o
- .debug_macro 0x00000000 0x29 Src/main.o
- .debug_macro 0x00000000 0x16 Src/main.o
+ .debug_macro 0x00000000 0x1a7 Src/main.o
.debug_macro 0x00000000 0x2e Src/main.o
.debug_macro 0x00000000 0x28 Src/main.o
.debug_macro 0x00000000 0x3b Src/main.o
+ .debug_macro 0x00000000 0x22 Src/main.o
+ .debug_macro 0x00000000 0x44 Src/main.o
.debug_macro 0x00000000 0x1c Src/main.o
.debug_macro 0x00000000 0x1f7 Src/main.o
.debug_macro 0x00000000 0x2d Src/main.o
@@ -485,9 +843,8 @@ Discarded input sections
.debug_macro 0x00000000 0xd39 Src/main.o
.debug_macro 0x00000000 0x8861 Src/main.o
.debug_macro 0x00000000 0x43 Src/main.o
- .debug_macro 0x00000000 0x1a7 Src/main.o
.debug_macro 0x00000000 0x2694 Src/main.o
- .debug_macro 0x00000000 0x57 Src/main.o
+ .debug_macro 0x00000000 0x64 Src/main.o
.debug_macro 0x00000000 0xa22 Src/main.o
.debug_macro 0x00000000 0x39f Src/main.o
.debug_macro 0x00000000 0x15b Src/main.o
@@ -507,9 +864,111 @@ Discarded input sections
.debug_macro 0x00000000 0x1df Src/main.o
.debug_macro 0x00000000 0x109 Src/main.o
.debug_macro 0x00000000 0x125 Src/main.o
- .debug_macro 0x00000000 0x1b6 Src/main.o
- .debug_macro 0x00000000 0x6a Src/main.o
+ .debug_macro 0x00000000 0x58 Src/main.o
+ .debug_macro 0x00000000 0x35 Src/main.o
+ .debug_macro 0x00000000 0x9c Src/main.o
+ .debug_macro 0x00000000 0x16 Src/main.o
+ .debug_macro 0x00000000 0x97 Src/main.o
+ .debug_macro 0x00000000 0x27a Src/main.o
+ .debug_macro 0x00000000 0xf6 Src/main.o
+ .debug_macro 0x00000000 0x10 Src/main.o
+ .debug_macro 0x00000000 0x52 Src/main.o
+ .debug_macro 0x00000000 0x16 Src/main.o
+ .debug_macro 0x00000000 0x43 Src/main.o
+ .debug_macro 0x00000000 0x180 Src/main.o
+ .debug_macro 0x00000000 0x10 Src/main.o
.debug_macro 0x00000000 0x22 Src/main.o
+ .debug_macro 0x00000000 0xbd Src/main.o
+ .debug_macro 0x00000000 0x16 Src/main.o
+ .debug_macro 0x00000000 0x16d Src/main.o
+ .debug_macro 0x00000000 0x16 Src/main.o
+ .debug_macro 0x00000000 0x35 Src/main.o
+ .debug_macro 0x00000000 0x16 Src/main.o
+ .debug_macro 0x00000000 0x29 Src/main.o
+ .debug_macro 0x00000000 0x16 Src/main.o
+ .debug_macro 0x00000000 0x6a Src/main.o
+ .debug_macro 0x00000000 0x1b6 Src/main.o
+ .debug_macro 0x00000000 0xa6 Src/main.o
+ .debug_macro 0x00000000 0x1c Src/main.o
+ .debug_macro 0x00000000 0x2e Src/main.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .text 0x00000000 0x0 Src/led.o
+ .data 0x00000000 0x0 Src/led.o
+ .bss 0x00000000 0x0 Src/led.o
+ .debug_macro 0x00000000 0x868 Src/led.o
+ .debug_macro 0x00000000 0x1a7 Src/led.o
+ .debug_macro 0x00000000 0x2e Src/led.o
+ .debug_macro 0x00000000 0x28 Src/led.o
+ .debug_macro 0x00000000 0x3b Src/led.o
+ .debug_macro 0x00000000 0x22 Src/led.o
+ .debug_macro 0x00000000 0x44 Src/led.o
+ .debug_macro 0x00000000 0x1c Src/led.o
+ .debug_macro 0x00000000 0x1f7 Src/led.o
+ .debug_macro 0x00000000 0x2d Src/led.o
+ .debug_macro 0x00000000 0x26 Src/led.o
+ .debug_macro 0x00000000 0xd39 Src/led.o
+ .debug_macro 0x00000000 0x8861 Src/led.o
+ .debug_macro 0x00000000 0x43 Src/led.o
+ .debug_macro 0x00000000 0x2694 Src/led.o
+ .debug_macro 0x00000000 0x64 Src/led.o
+ .debug_macro 0x00000000 0xa22 Src/led.o
+ .debug_macro 0x00000000 0x39f Src/led.o
+ .debug_macro 0x00000000 0x15b Src/led.o
+ .debug_macro 0x00000000 0x11e Src/led.o
+ .debug_macro 0x00000000 0x130 Src/led.o
+ .debug_macro 0x00000000 0x27 Src/led.o
+ .debug_macro 0x00000000 0x272 Src/led.o
+ .debug_macro 0x00000000 0x5f Src/led.o
+ .debug_macro 0x00000000 0x5d Src/led.o
+ .debug_macro 0x00000000 0x133 Src/led.o
+ .debug_macro 0x00000000 0x217 Src/led.o
+ .debug_macro 0x00000000 0x2e Src/led.o
+ .debug_macro 0x00000000 0x13a Src/led.o
+ .debug_macro 0x00000000 0x5e Src/led.o
+ .debug_macro 0x00000000 0x97 Src/led.o
+ .debug_macro 0x00000000 0x209 Src/led.o
+ .debug_macro 0x00000000 0x1df Src/led.o
+ .debug_macro 0x00000000 0x109 Src/led.o
+ .debug_macro 0x00000000 0x125 Src/led.o
+ .debug_macro 0x00000000 0x16 Src/led.o
+ .debug_macro 0x00000000 0xa6 Src/led.o
+ .group 0x00000000 0x8 Src/interrupts.o
.group 0x00000000 0x8 Src/interrupts.o
.group 0x00000000 0x8 Src/interrupts.o
.group 0x00000000 0x8 Src/interrupts.o
@@ -576,13 +1035,34 @@ Discarded input sections
.data 0x00000000 0x0 Src/interrupts.o
.bss 0x00000000 0x0 Src/interrupts.o
.debug_macro 0x00000000 0x868 Src/interrupts.o
- .debug_macro 0x00000000 0x1c Src/interrupts.o
- .debug_macro 0x00000000 0x1a7 Src/interrupts.o
+ .debug_macro 0x00000000 0x22 Src/interrupts.o
+ .debug_macro 0x00000000 0x58 Src/interrupts.o
+ .debug_macro 0x00000000 0x22 Src/interrupts.o
+ .debug_macro 0x00000000 0x35 Src/interrupts.o
+ .debug_macro 0x00000000 0x9c Src/interrupts.o
+ .debug_macro 0x00000000 0x16 Src/interrupts.o
+ .debug_macro 0x00000000 0x4a Src/interrupts.o
+ .debug_macro 0x00000000 0x97 Src/interrupts.o
+ .debug_macro 0x00000000 0x27a Src/interrupts.o
+ .debug_macro 0x00000000 0xf6 Src/interrupts.o
+ .debug_macro 0x00000000 0x10 Src/interrupts.o
+ .debug_macro 0x00000000 0x52 Src/interrupts.o
+ .debug_macro 0x00000000 0x16 Src/interrupts.o
+ .debug_macro 0x00000000 0x43 Src/interrupts.o
+ .debug_macro 0x00000000 0x180 Src/interrupts.o
+ .debug_macro 0x00000000 0x10 Src/interrupts.o
+ .debug_macro 0x00000000 0x22 Src/interrupts.o
+ .debug_macro 0x00000000 0xbd Src/interrupts.o
+ .debug_macro 0x00000000 0x16 Src/interrupts.o
+ .debug_macro 0x00000000 0x16d Src/interrupts.o
+ .debug_macro 0x00000000 0x16 Src/interrupts.o
+ .debug_macro 0x00000000 0x35 Src/interrupts.o
+ .debug_macro 0x00000000 0x16 Src/interrupts.o
+ .debug_macro 0x00000000 0x29 Src/interrupts.o
+ .debug_macro 0x00000000 0x16 Src/interrupts.o
.debug_macro 0x00000000 0x2e Src/interrupts.o
.debug_macro 0x00000000 0x28 Src/interrupts.o
.debug_macro 0x00000000 0x3b Src/interrupts.o
- .debug_macro 0x00000000 0x22 Src/interrupts.o
- .debug_macro 0x00000000 0x44 Src/interrupts.o
.debug_macro 0x00000000 0x1c Src/interrupts.o
.debug_macro 0x00000000 0x1f7 Src/interrupts.o
.debug_macro 0x00000000 0x2d Src/interrupts.o
@@ -590,8 +1070,9 @@ Discarded input sections
.debug_macro 0x00000000 0xd39 Src/interrupts.o
.debug_macro 0x00000000 0x8861 Src/interrupts.o
.debug_macro 0x00000000 0x43 Src/interrupts.o
+ .debug_macro 0x00000000 0x1a7 Src/interrupts.o
.debug_macro 0x00000000 0x2694 Src/interrupts.o
- .debug_macro 0x00000000 0x64 Src/interrupts.o
+ .debug_macro 0x00000000 0x57 Src/interrupts.o
.debug_macro 0x00000000 0xa22 Src/interrupts.o
.debug_macro 0x00000000 0x39f Src/interrupts.o
.debug_macro 0x00000000 0x15b Src/interrupts.o
@@ -611,32 +1092,11 @@ Discarded input sections
.debug_macro 0x00000000 0x1df Src/interrupts.o
.debug_macro 0x00000000 0x109 Src/interrupts.o
.debug_macro 0x00000000 0x125 Src/interrupts.o
- .debug_macro 0x00000000 0x9a Src/interrupts.o
- .debug_macro 0x00000000 0x58 Src/interrupts.o
- .debug_macro 0x00000000 0x35 Src/interrupts.o
- .debug_macro 0x00000000 0x9c Src/interrupts.o
- .debug_macro 0x00000000 0x16 Src/interrupts.o
- .debug_macro 0x00000000 0x97 Src/interrupts.o
- .debug_macro 0x00000000 0x27a Src/interrupts.o
- .debug_macro 0x00000000 0xf6 Src/interrupts.o
- .debug_macro 0x00000000 0x10 Src/interrupts.o
- .debug_macro 0x00000000 0x52 Src/interrupts.o
- .debug_macro 0x00000000 0x16 Src/interrupts.o
- .debug_macro 0x00000000 0x43 Src/interrupts.o
- .debug_macro 0x00000000 0x180 Src/interrupts.o
- .debug_macro 0x00000000 0x10 Src/interrupts.o
- .debug_macro 0x00000000 0x22 Src/interrupts.o
- .debug_macro 0x00000000 0xbd Src/interrupts.o
- .debug_macro 0x00000000 0x16 Src/interrupts.o
- .debug_macro 0x00000000 0x16d Src/interrupts.o
- .debug_macro 0x00000000 0x16 Src/interrupts.o
- .debug_macro 0x00000000 0x35 Src/interrupts.o
- .debug_macro 0x00000000 0x16 Src/interrupts.o
- .debug_macro 0x00000000 0x29 Src/interrupts.o
- .debug_macro 0x00000000 0x16 Src/interrupts.o
.debug_macro 0x00000000 0x1b6 Src/interrupts.o
.debug_macro 0x00000000 0x6a Src/interrupts.o
- .debug_macro 0x00000000 0x22 Src/interrupts.o
+ .debug_macro 0x00000000 0x2e Src/interrupts.o
+ .debug_macro 0x00000000 0xa6 Src/interrupts.o
+ .debug_macro 0x00000000 0x1c Src/interrupts.o
.group 0x00000000 0x8 Src/hal_msp.o
.group 0x00000000 0x8 Src/hal_msp.o
.group 0x00000000 0x8 Src/hal_msp.o
@@ -678,7 +1138,7 @@ Discarded input sections
.data 0x00000000 0x0 Src/hal_msp.o
.bss 0x00000000 0x0 Src/hal_msp.o
.text.HAL_SPI_MspDeInit
- 0x00000000 0x50 Src/hal_msp.o
+ 0x00000000 0x38 Src/hal_msp.o
.debug_macro 0x00000000 0x868 Src/hal_msp.o
.debug_macro 0x00000000 0x1a7 Src/hal_msp.o
.debug_macro 0x00000000 0x2e Src/hal_msp.o
@@ -714,261 +1174,8 @@ Discarded input sections
.debug_macro 0x00000000 0x1df Src/hal_msp.o
.debug_macro 0x00000000 0x109 Src/hal_msp.o
.debug_macro 0x00000000 0x125 Src/hal_msp.o
- .debug_macro 0x00000000 0x1c Src/hal_msp.o
- .debug_macro 0x00000000 0x9a Src/hal_msp.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .text 0x00000000 0x0 Src/downstream_spi.o
- .data 0x00000000 0x0 Src/downstream_spi.o
- .bss 0x00000000 0x0 Src/downstream_spi.o
- .text.Downstream_GetPacket
- 0x00000000 0x18 Src/downstream_spi.o
- .debug_macro 0x00000000 0x868 Src/downstream_spi.o
- .debug_macro 0x00000000 0x58 Src/downstream_spi.o
- .debug_macro 0x00000000 0x22 Src/downstream_spi.o
- .debug_macro 0x00000000 0x35 Src/downstream_spi.o
- .debug_macro 0x00000000 0x9c Src/downstream_spi.o
- .debug_macro 0x00000000 0x16 Src/downstream_spi.o
- .debug_macro 0x00000000 0x4a Src/downstream_spi.o
- .debug_macro 0x00000000 0x97 Src/downstream_spi.o
- .debug_macro 0x00000000 0x27a Src/downstream_spi.o
- .debug_macro 0x00000000 0xf6 Src/downstream_spi.o
- .debug_macro 0x00000000 0x10 Src/downstream_spi.o
- .debug_macro 0x00000000 0x52 Src/downstream_spi.o
- .debug_macro 0x00000000 0x16 Src/downstream_spi.o
- .debug_macro 0x00000000 0x43 Src/downstream_spi.o
- .debug_macro 0x00000000 0x180 Src/downstream_spi.o
- .debug_macro 0x00000000 0x10 Src/downstream_spi.o
- .debug_macro 0x00000000 0x22 Src/downstream_spi.o
- .debug_macro 0x00000000 0xbd Src/downstream_spi.o
- .debug_macro 0x00000000 0x16 Src/downstream_spi.o
- .debug_macro 0x00000000 0x16d Src/downstream_spi.o
- .debug_macro 0x00000000 0x16 Src/downstream_spi.o
- .debug_macro 0x00000000 0x35 Src/downstream_spi.o
- .debug_macro 0x00000000 0x16 Src/downstream_spi.o
- .debug_macro 0x00000000 0x29 Src/downstream_spi.o
- .debug_macro 0x00000000 0x16 Src/downstream_spi.o
- .debug_macro 0x00000000 0x2e Src/downstream_spi.o
- .debug_macro 0x00000000 0x28 Src/downstream_spi.o
- .debug_macro 0x00000000 0x3b Src/downstream_spi.o
- .debug_macro 0x00000000 0x1c Src/downstream_spi.o
- .debug_macro 0x00000000 0x1f7 Src/downstream_spi.o
- .debug_macro 0x00000000 0x2d Src/downstream_spi.o
- .debug_macro 0x00000000 0x26 Src/downstream_spi.o
- .debug_macro 0x00000000 0xd39 Src/downstream_spi.o
- .debug_macro 0x00000000 0x8861 Src/downstream_spi.o
- .debug_macro 0x00000000 0x43 Src/downstream_spi.o
- .debug_macro 0x00000000 0x1a7 Src/downstream_spi.o
- .debug_macro 0x00000000 0x2694 Src/downstream_spi.o
- .debug_macro 0x00000000 0x57 Src/downstream_spi.o
- .debug_macro 0x00000000 0xa22 Src/downstream_spi.o
- .debug_macro 0x00000000 0x39f Src/downstream_spi.o
- .debug_macro 0x00000000 0x15b Src/downstream_spi.o
- .debug_macro 0x00000000 0x11e Src/downstream_spi.o
- .debug_macro 0x00000000 0x130 Src/downstream_spi.o
- .debug_macro 0x00000000 0x27 Src/downstream_spi.o
- .debug_macro 0x00000000 0x272 Src/downstream_spi.o
- .debug_macro 0x00000000 0x5f Src/downstream_spi.o
- .debug_macro 0x00000000 0x5d Src/downstream_spi.o
- .debug_macro 0x00000000 0x133 Src/downstream_spi.o
- .debug_macro 0x00000000 0x217 Src/downstream_spi.o
- .debug_macro 0x00000000 0x2e Src/downstream_spi.o
- .debug_macro 0x00000000 0x13a Src/downstream_spi.o
- .debug_macro 0x00000000 0x5e Src/downstream_spi.o
- .debug_macro 0x00000000 0x97 Src/downstream_spi.o
- .debug_macro 0x00000000 0x209 Src/downstream_spi.o
- .debug_macro 0x00000000 0x1df Src/downstream_spi.o
- .debug_macro 0x00000000 0x109 Src/downstream_spi.o
- .debug_macro 0x00000000 0x125 Src/downstream_spi.o
- .debug_macro 0x00000000 0x1b6 Src/downstream_spi.o
- .debug_macro 0x00000000 0x6a Src/downstream_spi.o
- .debug_macro 0x00000000 0x22 Src/downstream_spi.o
- .debug_macro 0x00000000 0x9a Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .text 0x00000000 0x0 Src/downstream_interface_msc_mock.o
- .data 0x00000000 0x0 Src/downstream_interface_msc_mock.o
- .bss 0x00000000 0x0 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x868 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x1a7 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x2e Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x28 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x3b Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x22 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x44 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x1c Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x1f7 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x2d Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x26 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0xd39 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x8861 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x43 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x2694 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x64 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0xa22 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x39f Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x15b Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x11e Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x130 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x27 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x272 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x5f Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x5d Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x133 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x217 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x2e Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x13a Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x5e Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x97 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x209 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x1df Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x109 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x125 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x58 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x35 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x9c Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x16 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x97 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x27a Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0xf6 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x10 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x52 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x16 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x43 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x180 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x10 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x22 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0xbd Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x16 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x16d Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x16 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x35 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x16 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x29 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x16 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x1b6 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x6a Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x22 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x1c Src/downstream_interface_msc_mock.o
+ .debug_macro 0x00000000 0x22 Src/hal_msp.o
+ .debug_macro 0x00000000 0xa6 Src/hal_msp.o
.group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
@@ -1032,9 +1239,9 @@ Discarded input sections
.data 0x00000000 0x0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.bss 0x00000000 0x0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.text.USBD_CtlPrepareRx
- 0x00000000 0x20 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x00000000 0x3c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.text.USBD_GetRxCount
- 0x00000000 0xc Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x00000000 0x24 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.debug_macro 0x00000000 0x868 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.debug_macro 0x00000000 0x58 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.debug_macro 0x00000000 0x22 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
@@ -1278,11 +1485,7 @@ Discarded input sections
.data 0x00000000 0x0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.bss 0x00000000 0x0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.text.USBD_DeInit
- 0x00000000 0x24 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .text.USBD_Stop
- 0x00000000 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .text.USBD_RunTestMode
- 0x00000000 0x4 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x00000000 0x3c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.debug_macro 0x00000000 0x868 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.debug_macro 0x00000000 0x58 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.debug_macro 0x00000000 0x22 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
@@ -1411,6 +1614,7 @@ Discarded input sections
.data 0x00000000 0x0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.bss 0x00000000 0x0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_macro 0x00000000 0x868 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_macro 0x00000000 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_macro 0x00000000 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_macro 0x00000000 0x22 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_macro 0x00000000 0x35 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
@@ -1469,10 +1673,9 @@ Discarded input sections
.debug_macro 0x00000000 0x125 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_macro 0x00000000 0x1b6 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_macro 0x00000000 0x6a Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_macro 0x00000000 0x2e Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_macro 0x00000000 0x160 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_macro 0x00000000 0x22 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_macro 0x00000000 0x34 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_macro 0x00000000 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
.group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
.group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
@@ -1722,7 +1925,7 @@ Discarded input sections
.debug_macro 0x00000000 0x6a Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
.debug_macro 0x00000000 0x7c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
.debug_macro 0x00000000 0x160 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .debug_macro 0x00000000 0x22 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ .debug_macro 0x00000000 0x2e Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
.debug_macro 0x00000000 0x34 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
.group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
@@ -1792,6 +1995,7 @@ Discarded input sections
.data 0x00000000 0x0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.bss 0x00000000 0x0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x868 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ .debug_macro 0x00000000 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x22 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x35 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
@@ -1850,11 +2054,10 @@ Discarded input sections
.debug_macro 0x00000000 0x125 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x1b6 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x6a Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ .debug_macro 0x00000000 0x2e Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x7c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x160 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_macro 0x00000000 0x22 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x34 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_macro 0x00000000 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.group 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.group 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.group 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
@@ -1894,38 +2097,36 @@ Discarded input sections
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_ActivateDedicatedEndpoint
- 0x00000000 0xe0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x188 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_DeactivateDedicatedEndpoint
- 0x00000000 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .text.USB_StopDevice
- 0x00000000 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0xb4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_ClearInterrupts
- 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ .text.USB_HostInit
+ 0x00000000 0x158 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_InitFSLSPClkSel
- 0x00000000 0x40 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x74 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_ResetPort
- 0x00000000 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_DriveVbus
- 0x00000000 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .text.USB_HostInit
- 0x00000000 0x11c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x6c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_GetHostSpeed
- 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x28 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_GetCurrentFrame
- 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_HC_Init
- 0x00000000 0xe4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x1f8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ .text.USB_HC_StartXfer
+ 0x00000000 0x278 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_HC_ReadInterrupt
0x00000000 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_HC_Halt
0x00000000 0x200 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_DoPing
- 0x00000000 0x84 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .text.USB_HC_StartXfer
- 0x00000000 0x288 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x78 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_StopHost
0x00000000 0x100 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .bss.debug.6299
+ .bss.debug.6300
0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
@@ -2000,52 +2201,66 @@ Discarded input sections
.text 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_DeInit
+ 0x00000000 0x48 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_MspInit
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_MspDeInit
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.HAL_SPI_DeInit
- 0x00000000 0x28 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_Transmit
- 0x00000000 0x1b4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.HAL_SPI_TransmitReceive
- 0x00000000 0x340 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x278 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_Receive
- 0x00000000 0x21c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x310 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_TransmitReceive
+ 0x00000000 0x4b8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_Transmit_IT
- 0x00000000 0xbc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.HAL_SPI_TransmitReceive_IT
- 0x00000000 0xcc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x124 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_Receive_IT
- 0x00000000 0xc8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x134 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_Transmit_DMA
+ 0x00000000 0x144 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_Receive_DMA
+ 0x00000000 0x170 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_TransmitReceive_DMA
+ 0x00000000 0x1e0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_DMAPause
- 0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_DMAResume
- 0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_DMAStop
- 0x00000000 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.HAL_SPI_TxCpltCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.HAL_SPI_RxCpltCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_TxRxCpltCallback
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_TxHalfCpltCallback
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_RxHalfCpltCallback
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_TxRxHalfCpltCallback
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_ErrorCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.SPI_TxCloseIRQHandler
- 0x00000000 0x98 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.SPI_TxISR
- 0x00000000 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.SPI_RxCloseIRQHandler
- 0x00000000 0xe0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.SPI_RxISR
- 0x00000000 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.SPI_2LinesRxISR
- 0x00000000 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.HAL_SPI_IRQHandler
- 0x00000000 0xc8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_GetState
- 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_GetError
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_RxISR
+ 0x00000000 0x80 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_DMATransmitCplt
+ 0x00000000 0xac Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_DMAReceiveCplt
+ 0x00000000 0x11c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_DMAEndTransmitReceive
+ 0x00000000 0xd0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_DMATransmitReceiveCplt
+ 0x00000000 0x50 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_DMAHalfTransmitCplt
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_DMAHalfReceiveCplt
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_DMAHalfTransmitReceiveCplt
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_DMAError
+ 0x00000000 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.debug_macro 0x00000000 0x2e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
@@ -2120,12 +2335,11 @@ Discarded input sections
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.text.HAL_RCCEx_PeriphCLKConfig
- 0x00000000 0x168 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
+ 0x00000000 0x1d4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.text.HAL_RCCEx_GetPeriphCLKConfig
- 0x00000000 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
- .debug_info 0x00000000 0x610 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
- .debug_abbrev 0x00000000 0x1ea Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
- .debug_loc 0x00000000 0x1ae Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
+ 0x00000000 0x98 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
+ .debug_info 0x00000000 0x5aa Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
+ .debug_abbrev 0x00000000 0x19c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.debug_aranges
0x00000000 0x28 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.debug_ranges 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
@@ -2165,10 +2379,10 @@ Discarded input sections
.debug_macro 0x00000000 0x1df Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.debug_macro 0x00000000 0x109 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.debug_macro 0x00000000 0x125 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
- .debug_line 0x00000000 0x600 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
- .debug_str 0x00000000 0x602a3 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
+ .debug_line 0x00000000 0x5f7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
+ .debug_str 0x00000000 0x60298 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.comment 0x00000000 0x71 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
- .debug_frame 0x00000000 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
+ .debug_frame 0x00000000 0x5c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.ARM.attributes
0x00000000 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.group 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
@@ -2210,25 +2424,25 @@ Discarded input sections
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_DeInit
- 0x00000000 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0x78 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_MCOConfig
- 0x00000000 0x84 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0xac Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_EnableCSS
- 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_DisableCSS
- 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_GetPCLK1Freq
- 0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_GetPCLK2Freq
- 0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_GetOscConfig
- 0x00000000 0x108 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0x19c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_GetClockConfig
- 0x00000000 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- .text.HAL_RCC_CSSCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0x60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_NMI_IRQHandler
- 0x00000000 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ .text.HAL_RCC_CSSCallback
+ 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.debug_macro 0x00000000 0x2e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
@@ -2375,46 +2589,44 @@ Discarded input sections
.text 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ .text.HAL_PCD_DeInit
+ 0x00000000 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_MspInit
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_MspDeInit
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .text.HAL_PCD_Stop
- 0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .text.HAL_PCD_DeInit
- 0x00000000 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_DataOutStageCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_DataInStageCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_SetupStageCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_SOFCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_ResetCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_SuspendCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_ResumeCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_ISOOUTIncompleteCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_ISOINIncompleteCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_ConnectCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_DisconnectCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_DevConnect
- 0x00000000 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_DevDisconnect
- 0x00000000 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_ActivateRemoteWakeup
- 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_DeActivateRemoteWakeup
- 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_GetState
- 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.debug_macro 0x00000000 0x2e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
@@ -2489,19 +2701,19 @@ Discarded input sections
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.text.HAL_GPIO_DeInit
- 0x00000000 0x9c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x00000000 0x204 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.text.HAL_GPIO_ReadPin
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.text.HAL_GPIO_WritePin
- 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.text.HAL_GPIO_TogglePin
- 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x00000000 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.text.HAL_GPIO_LockPin
+ 0x00000000 0x50 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ .text.HAL_GPIO_EXTI_IRQHandler
0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.text.HAL_GPIO_EXTI_Callback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .text.HAL_GPIO_EXTI_IRQHandler
- 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.debug_macro 0x00000000 0x2e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
@@ -2575,18 +2787,32 @@ Discarded input sections
.text 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .text.HAL_DMA_Init
+ 0x00000000 0xe0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.text.HAL_DMA_DeInit
- 0x00000000 0xe3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x00000000 0x140c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.text.HAL_DMA_Start
- 0x00000000 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x00000000 0x64 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .text.HAL_DMA_Start_IT
+ 0x00000000 0xb4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.text.HAL_DMA_Abort
- 0x00000000 0x50 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x00000000 0x7c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.text.HAL_DMA_PollForTransfer
- 0x00000000 0x243c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x00000000 0x3308 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .text.HAL_DMA_IRQHandler
+ 0x00000000 0x32c8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.text.HAL_DMA_GetState
- 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.text.HAL_DMA_GetError
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .text.DMA_SetConfig
+ 0x00000000 0x5c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .debug_info 0x00000000 0x638 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .debug_abbrev 0x00000000 0x1c5 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .debug_aranges
+ 0x00000000 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .debug_ranges 0x00000000 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .debug_macro 0x00000000 0x1a6 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.debug_macro 0x00000000 0x2e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
@@ -2622,6 +2848,12 @@ Discarded input sections
.debug_macro 0x00000000 0x1df Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.debug_macro 0x00000000 0x109 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.debug_macro 0x00000000 0x125 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .debug_line 0x00000000 0x481d Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .debug_str 0x00000000 0x60452 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .comment 0x00000000 0x71 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .debug_frame 0x00000000 0x194 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .ARM.attributes
+ 0x00000000 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.group 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.group 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.group 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
@@ -2660,28 +2892,42 @@ Discarded input sections
.text 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_DisableIRQ
+ 0x00000000 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_GetPendingIRQ
+ 0x00000000 0x40 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_SetPendingIRQ
+ 0x00000000 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_ClearPendingIRQ
+ 0x00000000 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_GetActive
+ 0x00000000 0x40 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_GetPriority
+ 0x00000000 0x50 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_DecodePriority
+ 0x00000000 0x6c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_SystemReset
+ 0x00000000 0x28 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_DisableIRQ
- 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_SystemReset
- 0x00000000 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_GetPriorityGrouping
0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_GetPriority
- 0x00000000 0x5c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_SetPendingIRQ
- 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_GetPendingIRQ
0x00000000 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_ClearPendingIRQ
- 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_GetActive
0x00000000 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .text.HAL_SYSTICK_CLKSourceConfig
- 0x00000000 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .text.HAL_SYSTICK_Callback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_SYSTICK_IRQHandler
- 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.HAL_SYSTICK_Callback
+ 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.debug_macro 0x00000000 0x2e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
@@ -2755,38 +3001,38 @@ Discarded input sections
.text 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .text.HAL_DeInit
+ 0x00000000 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_MspInit
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_MspDeInit
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- .text.HAL_DeInit
- 0x00000000 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_SuspendTick
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_ResumeTick
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_GetHalVersion
- 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_GetREVID
- 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_GetDEVID
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_DBGMCU_EnableDBGSleepMode
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_DBGMCU_DisableDBGSleepMode
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_DBGMCU_EnableDBGStopMode
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_DBGMCU_DisableDBGStopMode
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_DBGMCU_EnableDBGStandbyMode
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_DBGMCU_DisableDBGStandbyMode
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_EnableCompensationCell
- 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x40 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_DisableCompensationCell
- 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x40 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.debug_macro 0x00000000 0x2e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
@@ -2838,10 +3084,10 @@ Discarded input sections
.text 0x00000000 0x0 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
.data 0x00000000 0x0 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
.bss 0x00000000 0x0 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
- .text.SystemCoreClockUpdate
- 0x00000000 0xa4 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
.data.AHBPrescTable
0x00000000 0x10 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ .text.SystemCoreClockUpdate
+ 0x00000000 0xf8 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
.debug_macro 0x00000000 0x868 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
.debug_macro 0x00000000 0x2e Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
.debug_macro 0x00000000 0x28 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
@@ -2900,11 +3146,13 @@ Linker script and memory map
LOAD Src/usbd_descriptors.o
LOAD Src/usbd_config.o
LOAD Src/usb_device.o
+LOAD Src/upstream_statemachine.o
+LOAD Src/upstream_spi.o
+LOAD Src/upstream_msc.o
LOAD Src/main.o
+LOAD Src/led.o
LOAD Src/interrupts.o
LOAD Src/hal_msp.o
-LOAD Src/downstream_spi.o
-LOAD Src/downstream_interface_msc_mock.o
LOAD Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
LOAD Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
LOAD Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
@@ -2940,7 +3188,7 @@ LOAD /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/
LOAD /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a
END GROUP
-.text 0x08000000 0x6de6
+.text 0x08000000 0x7e7e
*(.vectors)
.vectors 0x08000000 0x188 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
0x08000000 __Vectors
@@ -2949,809 +3197,859 @@ END GROUP
0x08000188 __end__ = .
*(.text*)
.text.USBD_FS_DeviceDescriptor
- 0x08000188 0xc Src/usbd_descriptors.o
+ 0x08000188 0x24 Src/usbd_descriptors.o
0x08000188 USBD_FS_DeviceDescriptor
.text.USBD_FS_LangIDStrDescriptor
- 0x08000194 0xc Src/usbd_descriptors.o
- 0x08000194 USBD_FS_LangIDStrDescriptor
+ 0x080001ac 0x24 Src/usbd_descriptors.o
+ 0x080001ac USBD_FS_LangIDStrDescriptor
.text.USBD_FS_ProductStrDescriptor
- 0x080001a0 0x1c Src/usbd_descriptors.o
- 0x080001a0 USBD_FS_ProductStrDescriptor
+ 0x080001d0 0x28 Src/usbd_descriptors.o
+ 0x080001d0 USBD_FS_ProductStrDescriptor
.text.USBD_FS_ManufacturerStrDescriptor
- 0x080001bc 0x1c Src/usbd_descriptors.o
- 0x080001bc USBD_FS_ManufacturerStrDescriptor
+ 0x080001f8 0x28 Src/usbd_descriptors.o
+ 0x080001f8 USBD_FS_ManufacturerStrDescriptor
.text.USBD_FS_SerialStrDescriptor
- 0x080001d8 0x1c Src/usbd_descriptors.o
- 0x080001d8 USBD_FS_SerialStrDescriptor
+ 0x08000220 0x28 Src/usbd_descriptors.o
+ 0x08000220 USBD_FS_SerialStrDescriptor
.text.USBD_FS_ConfigStrDescriptor
- 0x080001f4 0x1c Src/usbd_descriptors.o
- 0x080001f4 USBD_FS_ConfigStrDescriptor
+ 0x08000248 0x28 Src/usbd_descriptors.o
+ 0x08000248 USBD_FS_ConfigStrDescriptor
.text.USBD_FS_InterfaceStrDescriptor
- 0x08000210 0x1c Src/usbd_descriptors.o
- 0x08000210 USBD_FS_InterfaceStrDescriptor
+ 0x08000270 0x28 Src/usbd_descriptors.o
+ 0x08000270 USBD_FS_InterfaceStrDescriptor
.text.HAL_PCD_MspInit
- 0x0800022c 0x58 Src/usbd_config.o
- 0x0800022c HAL_PCD_MspInit
+ 0x08000298 0x6c Src/usbd_config.o
+ 0x08000298 HAL_PCD_MspInit
.text.HAL_PCD_SetupStageCallback
- 0x08000284 0x14 Src/usbd_config.o
- 0x08000284 HAL_PCD_SetupStageCallback
+ 0x08000304 0x24 Src/usbd_config.o
+ 0x08000304 HAL_PCD_SetupStageCallback
.text.HAL_PCD_DataOutStageCallback
- 0x08000298 0x18 Src/usbd_config.o
- 0x08000298 HAL_PCD_DataOutStageCallback
+ 0x08000328 0x38 Src/usbd_config.o
+ 0x08000328 HAL_PCD_DataOutStageCallback
.text.HAL_PCD_DataInStageCallback
- 0x080002b0 0x18 Src/usbd_config.o
- 0x080002b0 HAL_PCD_DataInStageCallback
+ 0x08000360 0x34 Src/usbd_config.o
+ 0x08000360 HAL_PCD_DataInStageCallback
.text.HAL_PCD_SOFCallback
- 0x080002c8 0xc Src/usbd_config.o
- 0x080002c8 HAL_PCD_SOFCallback
+ 0x08000394 0x1c Src/usbd_config.o
+ 0x08000394 HAL_PCD_SOFCallback
.text.HAL_PCD_ResetCallback
- 0x080002d4 0x20 Src/usbd_config.o
- 0x080002d4 HAL_PCD_ResetCallback
+ 0x080003b0 0x50 Src/usbd_config.o
+ 0x080003b0 HAL_PCD_ResetCallback
.text.HAL_PCD_SuspendCallback
- 0x080002f4 0x1c Src/usbd_config.o
- 0x080002f4 HAL_PCD_SuspendCallback
+ 0x08000400 0x34 Src/usbd_config.o
+ 0x08000400 HAL_PCD_SuspendCallback
.text.HAL_PCD_ResumeCallback
- 0x08000310 0x1c Src/usbd_config.o
- 0x08000310 HAL_PCD_ResumeCallback
+ 0x08000434 0x34 Src/usbd_config.o
+ 0x08000434 HAL_PCD_ResumeCallback
.text.HAL_PCD_ISOOUTIncompleteCallback
- 0x0800032c 0xc Src/usbd_config.o
- 0x0800032c HAL_PCD_ISOOUTIncompleteCallback
+ 0x08000468 0x24 Src/usbd_config.o
+ 0x08000468 HAL_PCD_ISOOUTIncompleteCallback
.text.HAL_PCD_ISOINIncompleteCallback
- 0x08000338 0xc Src/usbd_config.o
- 0x08000338 HAL_PCD_ISOINIncompleteCallback
+ 0x0800048c 0x24 Src/usbd_config.o
+ 0x0800048c HAL_PCD_ISOINIncompleteCallback
.text.HAL_PCD_ConnectCallback
- 0x08000344 0xc Src/usbd_config.o
- 0x08000344 HAL_PCD_ConnectCallback
+ 0x080004b0 0x1c Src/usbd_config.o
+ 0x080004b0 HAL_PCD_ConnectCallback
.text.HAL_PCD_DisconnectCallback
- 0x08000350 0xc Src/usbd_config.o
- 0x08000350 HAL_PCD_DisconnectCallback
+ 0x080004cc 0x1c Src/usbd_config.o
+ 0x080004cc HAL_PCD_DisconnectCallback
.text.HAL_PCD_BufferFreedCallBack
- 0x0800035c 0xc Src/usbd_config.o
- 0x0800035c HAL_PCD_BufferFreedCallBack
+ 0x080004e8 0x1c Src/usbd_config.o
+ 0x080004e8 HAL_PCD_BufferFreedCallBack
.text.USBD_LL_Init
- 0x08000368 0x5c Src/usbd_config.o
- 0x08000368 USBD_LL_Init
+ 0x08000504 0x94 Src/usbd_config.o
+ 0x08000504 USBD_LL_Init
.text.USBD_LL_Start
- 0x080003c4 0x10 Src/usbd_config.o
- 0x080003c4 USBD_LL_Start
+ 0x08000598 0x20 Src/usbd_config.o
+ 0x08000598 USBD_LL_Start
+ .text.USBD_LL_Stop
+ 0x080005b8 0x20 Src/usbd_config.o
+ 0x080005b8 USBD_LL_Stop
.text.USBD_LL_OpenEP
- 0x080003d4 0x14 Src/usbd_config.o
- 0x080003d4 USBD_LL_OpenEP
+ 0x080005d8 0x34 Src/usbd_config.o
+ 0x080005d8 USBD_LL_OpenEP
.text.USBD_LL_CloseEP
- 0x080003e8 0x10 Src/usbd_config.o
- 0x080003e8 USBD_LL_CloseEP
+ 0x0800060c 0x28 Src/usbd_config.o
+ 0x0800060c USBD_LL_CloseEP
.text.USBD_LL_FlushEP
- 0x080003f8 0x10 Src/usbd_config.o
- 0x080003f8 USBD_LL_FlushEP
+ 0x08000634 0x28 Src/usbd_config.o
+ 0x08000634 USBD_LL_FlushEP
.text.USBD_LL_StallEP
- 0x08000408 0x10 Src/usbd_config.o
- 0x08000408 USBD_LL_StallEP
+ 0x0800065c 0x28 Src/usbd_config.o
+ 0x0800065c USBD_LL_StallEP
.text.USBD_LL_ClearStallEP
- 0x08000418 0x10 Src/usbd_config.o
- 0x08000418 USBD_LL_ClearStallEP
+ 0x08000684 0x28 Src/usbd_config.o
+ 0x08000684 USBD_LL_ClearStallEP
.text.USBD_LL_IsStallEP
- 0x08000428 0x30 Src/usbd_config.o
- 0x08000428 USBD_LL_IsStallEP
+ 0x080006ac 0x58 Src/usbd_config.o
+ 0x080006ac USBD_LL_IsStallEP
.text.USBD_LL_SetUSBAddress
- 0x08000458 0x10 Src/usbd_config.o
- 0x08000458 USBD_LL_SetUSBAddress
+ 0x08000704 0x28 Src/usbd_config.o
+ 0x08000704 USBD_LL_SetUSBAddress
.text.USBD_LL_Transmit
- 0x08000468 0x10 Src/usbd_config.o
- 0x08000468 USBD_LL_Transmit
+ 0x0800072c 0x34 Src/usbd_config.o
+ 0x0800072c USBD_LL_Transmit
.text.USBD_LL_PrepareReceive
- 0x08000478 0x10 Src/usbd_config.o
- 0x08000478 USBD_LL_PrepareReceive
+ 0x08000760 0x34 Src/usbd_config.o
+ 0x08000760 USBD_LL_PrepareReceive
.text.USBD_LL_GetRxDataSize
- 0x08000488 0xc Src/usbd_config.o
- 0x08000488 USBD_LL_GetRxDataSize
+ 0x08000794 0x28 Src/usbd_config.o
+ 0x08000794 USBD_LL_GetRxDataSize
.text.USB_Device_Init
- 0x08000494 0x2c Src/usb_device.o
- 0x08000494 USB_Device_Init
- .text.GPIO_Init
- 0x080004c0 0xc0 Src/main.o
+ 0x080007bc 0x18 Src/usb_device.o
+ 0x080007bc USB_Device_Init
+ .text.Upstream_InitStateMachine
+ 0x080007d4 0x7c Src/upstream_statemachine.o
+ 0x080007d4 Upstream_InitStateMachine
+ .text.Upstream_StateMachine_SetErrorState
+ 0x08000850 0x30 Src/upstream_statemachine.o
+ 0x08000850 Upstream_StateMachine_SetErrorState
+ .text.Upstream_StateMachine_CheckClassOperationOk
+ 0x08000880 0x30 Src/upstream_statemachine.o
+ 0x08000880 Upstream_StateMachine_CheckClassOperationOk
+ .text.Upstream_StateMachine_TestInterfaceReplyCallback
+ 0x080008b0 0x8c Src/upstream_statemachine.o
+ 0x080008b0 Upstream_StateMachine_TestInterfaceReplyCallback
+ .text.Upstream_StateMachine_NotifyDevice
+ 0x0800093c 0x40 Src/upstream_statemachine.o
+ 0x0800093c Upstream_StateMachine_NotifyDevice
+ .text.Upstream_StateMachine_NotifyDeviceReplyCallback
+ 0x0800097c 0xbc Src/upstream_statemachine.o
+ 0x0800097c Upstream_StateMachine_NotifyDeviceReplyCallback
+ .text.Upstream_StateMachine_DeviceDisconnected
+ 0x08000a38 0x3c Src/upstream_statemachine.o
+ 0x08000a38 Upstream_StateMachine_DeviceDisconnected
+ .text.Upstream_InitSPI
+ 0x08000a74 0x9c Src/upstream_spi.o
+ 0x08000a74 Upstream_InitSPI
+ .text.Upstream_GetFreePacket
+ 0x08000b10 0x78 Src/upstream_spi.o
+ 0x08000b10 Upstream_GetFreePacket
+ .text.Upstream_GetFreePacketImmediately
+ 0x08000b88 0x50 Src/upstream_spi.o
+ 0x08000b88 Upstream_GetFreePacketImmediately
+ .text.Upstream_ReleasePacket
+ 0x08000bd8 0x68 Src/upstream_spi.o
+ 0x08000bd8 Upstream_ReleasePacket
+ .text.Upstream_TransmitPacket
+ 0x08000c40 0xf0 Src/upstream_spi.o
+ 0x08000c40 Upstream_TransmitPacket
+ .text.HAL_SPI_TxRxCpltCallback
+ 0x08000d30 0x28 Src/upstream_spi.o
+ 0x08000d30 HAL_SPI_TxRxCpltCallback
+ .text.Upstream_SPIProcess_InterruptSafe
+ 0x08000d58 0x30 Src/upstream_spi.o
+ 0x08000d58 Upstream_SPIProcess_InterruptSafe
+ .text.Upstream_SPIProcess
+ 0x08000d88 0x1d4 Src/upstream_spi.o
+ 0x08000d88 Upstream_SPIProcess
+ .text.Upstream_ReceivePacket
+ 0x08000f5c 0x44 Src/upstream_spi.o
+ 0x08000f5c Upstream_ReceivePacket
+ .text.Upstream_CheckBeginPacketReception
+ 0x08000fa0 0x58 Src/upstream_spi.o
+ 0x08000fa0 Upstream_CheckBeginPacketReception
+ .text.Upstream_TxOkInterrupt
+ 0x08000ff8 0x78 Src/upstream_spi.o
+ 0x08000ff8 Upstream_TxOkInterrupt
+ .text.Upstream_BeginTransmitPacketSize
+ 0x08001070 0x4c Src/upstream_spi.o
+ 0x08001070 Upstream_BeginTransmitPacketSize
+ .text.Upstream_BeginTransmitPacketBody
+ 0x080010bc 0x58 Src/upstream_spi.o
+ 0x080010bc Upstream_BeginTransmitPacketBody
+ .text.Upstream_BeginReceivePacketSize
+ 0x08001114 0x88 Src/upstream_spi.o
+ 0x08001114 Upstream_BeginReceivePacketSize
+ .text.Upstream_BeginReceivePacketBody
+ 0x0800119c 0x58 Src/upstream_spi.o
+ 0x0800119c Upstream_BeginReceivePacketBody
+ .text.HAL_SPI_ErrorCallback
+ 0x080011f4 0x28 Src/upstream_spi.o
+ 0x080011f4 HAL_SPI_ErrorCallback
+ .text.Upstream_MSC_TestReady
+ 0x0800121c 0x34 Src/upstream_msc.o
+ 0x0800121c Upstream_MSC_TestReady
+ .text.Upstream_MSC_TestReadyFreePacketCallback
+ 0x08001250 0x60 Src/upstream_msc.o
+ .text.Upstream_MSC_TestReadyReplyCallback
+ 0x080012b0 0x5c Src/upstream_msc.o
+ .text.Upstream_MSC_GetCapacity
+ 0x0800130c 0x68 Src/upstream_msc.o
+ 0x0800130c Upstream_MSC_GetCapacity
+ .text.Upstream_MSC_GetCapacityReplyCallback
+ 0x08001374 0x64 Src/upstream_msc.o
+ .text.Upstream_MSC_BeginRead
+ 0x080013d8 0xa0 Src/upstream_msc.o
+ 0x080013d8 Upstream_MSC_BeginRead
+ .text.Upstream_MSC_GetStreamDataPacket
+ 0x08001478 0x74 Src/upstream_msc.o
+ 0x08001478 Upstream_MSC_GetStreamDataPacket
+ .text.Upstream_MSC_GetStreamDataPacketCallback
+ 0x080014ec 0xb0 Src/upstream_msc.o
+ .text.Upstream_MSC_BeginWrite
+ 0x0800159c 0x50 Src/upstream_msc.o
+ 0x0800159c Upstream_MSC_BeginWrite
+ .text.Upstream_MSC_BeginWriteFreePacketCallback
+ 0x080015ec 0x84 Src/upstream_msc.o
+ .text.Upstream_MSC_BeginWriteReplyCallback
+ 0x08001670 0x6c Src/upstream_msc.o
+ .text.Upstream_MSC_PutStreamDataPacket
+ 0x080016dc 0x50 Src/upstream_msc.o
+ 0x080016dc Upstream_MSC_PutStreamDataPacket
+ .text.main 0x0800172c 0x24 Src/main.o
+ 0x0800172c main
.text.SystemClock_Config
- 0x08000580 0x78 Src/main.o
- 0x08000580 SystemClock_Config
- .text.main 0x080005f8 0x18 Src/main.o
- 0x080005f8 main
+ 0x08001750 0x98 Src/main.o
+ 0x08001750 SystemClock_Config
+ .text.GPIO_Init
+ 0x080017e8 0xe4 Src/main.o
+ .text.LED_Init
+ 0x080018cc 0x24 Src/led.o
+ 0x080018cc LED_Init
+ .text.LED_Fault_SetBlinkRate
+ 0x080018f0 0x3c Src/led.o
+ 0x080018f0 LED_Fault_SetBlinkRate
+ .text.LED_DoBlinks
+ 0x0800192c 0x68 Src/led.o
+ 0x0800192c LED_DoBlinks
.text.SysTick_Handler
- 0x08000610 0x8 Src/interrupts.o
- 0x08000610 SysTick_Handler
+ 0x08001994 0x10 Src/interrupts.o
+ 0x08001994 SysTick_Handler
.text.OTG_FS_IRQHandler
- 0x08000618 0x20 Src/interrupts.o
- 0x08000618 OTG_FS_IRQHandler
- .text.DMA2_Stream2_IRQHandler
- 0x08000638 0x20 Src/interrupts.o
- 0x08000638 DMA2_Stream2_IRQHandler
- .text.DMA2_Stream3_IRQHandler
- 0x08000658 0x20 Src/interrupts.o
- 0x08000658 DMA2_Stream3_IRQHandler
+ 0x080019a4 0x10 Src/interrupts.o
+ 0x080019a4 OTG_FS_IRQHandler
.text.EXTI3_IRQHandler
- 0x08000678 0x24 Src/interrupts.o
- 0x08000678 EXTI3_IRQHandler
+ 0x080019b4 0x14 Src/interrupts.o
+ 0x080019b4 EXTI3_IRQHandler
+ .text.SPI1_IRQHandler
+ 0x080019c8 0x24 Src/interrupts.o
+ 0x080019c8 SPI1_IRQHandler
.text.HAL_MspInit
- 0x0800069c 0x10 Src/hal_msp.o
- 0x0800069c HAL_MspInit
+ 0x080019ec 0x14 Src/hal_msp.o
+ 0x080019ec HAL_MspInit
.text.HAL_SPI_MspInit
- 0x080006ac 0x120 Src/hal_msp.o
- 0x080006ac HAL_SPI_MspInit
- .text.SPI1_Init
- 0x080007cc 0x44 Src/downstream_spi.o
- .text.Downstream_BeginPacketReception
- 0x08000810 0x44 Src/downstream_spi.o
- .text.Downstream_InitInterface
- 0x08000854 0x50 Src/downstream_spi.o
- 0x08000854 Downstream_InitInterface
- .text.Downstream_GetFreePacket
- 0x080008a4 0x54 Src/downstream_spi.o
- 0x080008a4 Downstream_GetFreePacket
- .text.Downstream_CheckBeginPacketReception
- 0x080008f8 0x44 Src/downstream_spi.o
- .text.Downstream_GetFreePacketImmediately
- 0x0800093c 0x38 Src/downstream_spi.o
- 0x0800093c Downstream_GetFreePacketImmediately
- .text.Downstream_ReleasePacket
- 0x08000974 0x1c Src/downstream_spi.o
- 0x08000974 Downstream_ReleasePacket
- .text.Downstream_TxOkInterrupt
- 0x08000990 0x9c Src/downstream_spi.o
- 0x08000990 Downstream_TxOkInterrupt
- .text.Downstream_SendPacket
- 0x08000a2c 0xa4 Src/downstream_spi.o
- 0x08000a2c Downstream_SendPacket
- .text.HAL_SPI_TxCpltCallback
- 0x08000ad0 0x88 Src/downstream_spi.o
- 0x08000ad0 HAL_SPI_TxCpltCallback
- .text.HAL_SPI_RxCpltCallback
- 0x08000b58 0x94 Src/downstream_spi.o
- 0x08000b58 HAL_SPI_RxCpltCallback
- .text.HAL_SPI_ErrorCallback
- 0x08000bec 0x4 Src/downstream_spi.o
- 0x08000bec HAL_SPI_ErrorCallback
- .text.DownstreamInterface_GetCapacityReplyCallback
- 0x08000bf0 0x2c Src/downstream_interface_msc_mock.o
- .text.DownstreamInterface_TestReadyReplyCallback
- 0x08000c1c 0x14 Src/downstream_interface_msc_mock.o
- .text.DownstreamInterface_BeginWriteReplyCallback
- 0x08000c30 0x18 Src/downstream_interface_msc_mock.o
- .text.DownstreamInterface_TestReady
- 0x08000c48 0x30 Src/downstream_interface_msc_mock.o
- 0x08000c48 DownstreamInterface_TestReady
- .text.DownstreamInterface_GetCapacity
- 0x08000c78 0x2c Src/downstream_interface_msc_mock.o
- 0x08000c78 DownstreamInterface_GetCapacity
- .text.DownstreamInterface_BeginRead
- 0x08000ca4 0x70 Src/downstream_interface_msc_mock.o
- 0x08000ca4 DownstreamInterface_BeginRead
- .text.DownstreamInterface_GetStreamDataPacket
- 0x08000d14 0x44 Src/downstream_interface_msc_mock.o
- 0x08000d14 DownstreamInterface_GetStreamDataPacket
- .text.DownstreamInterface_GetStreamDataPacketCallback
- 0x08000d58 0x54 Src/downstream_interface_msc_mock.o
- .text.DownstreamInterface_BeginWrite
- 0x08000dac 0x54 Src/downstream_interface_msc_mock.o
- 0x08000dac DownstreamInterface_BeginWrite
- .text.DownstreamInterface_PutStreamDataPacket
- 0x08000e00 0x14 Src/downstream_interface_msc_mock.o
- 0x08000e00 DownstreamInterface_PutStreamDataPacket
+ 0x08001a00 0xac Src/hal_msp.o
+ 0x08001a00 HAL_SPI_MspInit
.text.USBD_CtlSendData
- 0x08000e14 0x1c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- 0x08000e14 USBD_CtlSendData
+ 0x08001aac 0x38 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x08001aac USBD_CtlSendData
.text.USBD_CtlContinueSendData
- 0x08000e30 0x14 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- 0x08000e30 USBD_CtlContinueSendData
+ 0x08001ae4 0x24 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x08001ae4 USBD_CtlContinueSendData
.text.USBD_CtlContinueRx
- 0x08000e44 0x14 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- 0x08000e44 USBD_CtlContinueRx
+ 0x08001b08 0x24 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x08001b08 USBD_CtlContinueRx
.text.USBD_CtlSendStatus
- 0x08000e58 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- 0x08000e58 USBD_CtlSendStatus
+ 0x08001b2c 0x28 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x08001b2c USBD_CtlSendStatus
.text.USBD_CtlReceiveStatus
- 0x08000e70 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- 0x08000e70 USBD_CtlReceiveStatus
- .text.USBD_GetLen
- 0x08000e88 0x14 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .text.USBD_SetFeature
- 0x08000e9c 0x20 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .text.USBD_ParseSetupRequest
- 0x08000ebc 0x28 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- 0x08000ebc USBD_ParseSetupRequest
- .text.USBD_CtlError
- 0x08000ee4 0x14 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- 0x08000ee4 USBD_CtlError
+ 0x08001b54 0x28 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x08001b54 USBD_CtlReceiveStatus
+ .text.USBD_StdDevReq
+ 0x08001b7c 0xa0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x08001b7c USBD_StdDevReq
+ .text.USBD_StdItfReq
+ 0x08001c1c 0x68 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x08001c1c USBD_StdItfReq
+ .text.USBD_StdEPReq
+ 0x08001c84 0x1b0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x08001c84 USBD_StdEPReq
.text.USBD_GetDescriptor
- 0x08000ef8 0x144 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x08001e34 0x1f8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.text.USBD_SetAddress
- 0x0800103c 0x4c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x0800202c 0x7c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.text.USBD_SetConfig
- 0x08001088 0xa8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x080020a8 0x114 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.text.USBD_GetConfig
- 0x08001130 0x40 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x080021bc 0x64 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.text.USBD_GetStatus
- 0x08001170 0x30 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x08002220 0x54 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .text.USBD_SetFeature
+ 0x08002274 0x34 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.text.USBD_ClrFeature
- 0x080011a0 0x30 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .text.USBD_StdDevReq
- 0x080011d0 0x48 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- 0x080011d0 USBD_StdDevReq
- .text.USBD_StdItfReq
- 0x08001218 0x38 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- 0x08001218 USBD_StdItfReq
- .text.USBD_StdEPReq
- 0x08001250 0x108 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- 0x08001250 USBD_StdEPReq
+ 0x080022a8 0x50 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .text.USBD_ParseSetupRequest
+ 0x080022f8 0x78 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x080022f8 USBD_ParseSetupRequest
+ .text.USBD_CtlError
+ 0x08002370 0x20 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x08002370 USBD_CtlError
.text.USBD_GetString
- 0x08001358 0x3c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- 0x08001358 USBD_GetString
+ 0x08002390 0x84 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x08002390 USBD_GetString
+ .text.USBD_GetLen
+ 0x08002414 0x30 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.text.USBD_Init
- 0x08001394 0x2c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x08001394 USBD_Init
+ 0x08002444 0x54 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002444 USBD_Init
.text.USBD_RegisterClass
- 0x080013c0 0x10 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080013c0 USBD_RegisterClass
+ 0x08002498 0x34 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002498 USBD_RegisterClass
.text.USBD_Start
- 0x080013d0 0xc Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080013d0 USBD_Start
+ 0x080024cc 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x080024cc USBD_Start
+ .text.USBD_Stop
+ 0x080024e4 0x2c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x080024e4 USBD_Stop
+ .text.USBD_RunTestMode
+ 0x08002510 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002510 USBD_RunTestMode
.text.USBD_SetClassConfig
- 0x080013dc 0x1c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080013dc USBD_SetClassConfig
+ 0x08002528 0x40 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002528 USBD_SetClassConfig
.text.USBD_ClrClassConfig
- 0x080013f8 0x10 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080013f8 USBD_ClrClassConfig
+ 0x08002568 0x28 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002568 USBD_ClrClassConfig
.text.USBD_SetupStage
- 0x08001408 0x5c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x08001408 USBD_SetupStage
+ 0x08002590 0x94 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002590 USBD_SetupStage
.text.USBD_DataOutStage
- 0x08001464 0x60 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x08001464 USBD_DataOutStage
+ 0x08002624 0xb8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002624 USBD_DataOutStage
.text.USBD_DataInStage
- 0x080014c4 0x8c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080014c4 USBD_DataInStage
+ 0x080026dc 0x120 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x080026dc USBD_DataInStage
.text.USBD_Reset
- 0x08001550 0x40 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x08001550 USBD_Reset
+ 0x080027fc 0x60 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x080027fc USBD_Reset
.text.USBD_SetSpeed
- 0x08001590 0x8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x08001590 USBD_SetSpeed
+ 0x0800285c 0x20 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x0800285c USBD_SetSpeed
.text.USBD_Suspend
- 0x08001598 0x14 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x08001598 USBD_Suspend
+ 0x0800287c 0x2c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x0800287c USBD_Suspend
.text.USBD_Resume
- 0x080015ac 0xc Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080015ac USBD_Resume
+ 0x080028a8 0x24 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x080028a8 USBD_Resume
.text.USBD_SOF
- 0x080015b8 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080015b8 USBD_SOF
+ 0x080028cc 0x34 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x080028cc USBD_SOF
.text.USBD_IsoINIncomplete
- 0x080015d0 0x4 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080015d0 USBD_IsoINIncomplete
+ 0x08002900 0x1c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002900 USBD_IsoINIncomplete
.text.USBD_IsoOUTIncomplete
- 0x080015d4 0x4 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080015d4 USBD_IsoOUTIncomplete
+ 0x0800291c 0x1c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x0800291c USBD_IsoOUTIncomplete
.text.USBD_DevConnected
- 0x080015d8 0x4 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080015d8 USBD_DevConnected
+ 0x08002938 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002938 USBD_DevConnected
.text.USBD_DevDisconnected
- 0x080015dc 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080015dc USBD_DevDisconnected
+ 0x08002950 0x30 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002950 USBD_DevDisconnected
.text.USBD_BufferFreed
- 0x080015f4 0x10 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080015f4 USBD_BufferFreed
- .text.SCSI_StartStopUnit
- 0x08001604 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_RequestSense
- 0x08001620 0xb4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08002980 0x20 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002980 USBD_BufferFreed
+ .text.SCSI_ProcessCmd
+ 0x080029a0 0x22c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x080029a0 SCSI_ProcessCmd
+ .text.SCSI_TestUnitReady
+ 0x08002bcc 0x68 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .text.SCSI_TestUnitReadyCallback
+ 0x08002c34 0x60 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08002c34 SCSI_TestUnitReadyCallback
.text.SCSI_Inquiry
- 0x080016d4 0x6c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08002c94 0xb0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .text.SCSI_ReadCapacity10
+ 0x08002d44 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .text.SCSI_ReadCapacity10Callback
+ 0x08002d64 0x12c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08002d64 SCSI_ReadCapacity10Callback
+ .text.SCSI_ReadFormatCapacity
+ 0x08002e90 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .text.SCSI_ReadFormatCapacityCallback
+ 0x08002eb0 0x11c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08002eb0 SCSI_ReadFormatCapacityCallback
.text.SCSI_ModeSense6
- 0x08001740 0x40 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08002fcc 0x64 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.text.SCSI_ModeSense10
- 0x08001780 0x40 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_Write10FreePacketCallback
- 0x080017c0 0x3c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x080017c0 SCSI_Write10FreePacketCallback
+ 0x08003030 0x64 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .text.SCSI_RequestSense
+ 0x08003094 0x130 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.text.SCSI_SenseCode
- 0x080017fc 0x30 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x080017fc SCSI_SenseCode
- .text.SCSI_CheckAddressRange
- 0x0800182c 0x34 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_Verify10
- 0x08001860 0x6c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_TestUnitReadyCallback
- 0x080018cc 0x48 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x080018cc SCSI_TestUnitReadyCallback
- .text.SCSI_TestUnitReady
- 0x08001914 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_ReadCapacity10Callback
- 0x0800196c 0x9c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x0800196c SCSI_ReadCapacity10Callback
- .text.SCSI_ReadCapacity10
- 0x08001a08 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_ReadFormatCapacityCallback
- 0x08001a24 0xa4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x08001a24 SCSI_ReadFormatCapacityCallback
- .text.SCSI_ReadFormatCapacity
- 0x08001ac8 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_Read10ReplyCallback
- 0x08001ae4 0x6c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x08001ae4 SCSI_Read10ReplyCallback
- .text.SCSI_Read10BeginCallback
- 0x08001b50 0x50 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x08001b50 SCSI_Read10BeginCallback
+ 0x080031c4 0x7c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x080031c4 SCSI_SenseCode
+ .text.SCSI_StartStopUnit
+ 0x08003240 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.text.SCSI_Read10
- 0x08001ba0 0xf8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_Write10BeginCallback
- 0x08001c98 0x80 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x08001c98 SCSI_Write10BeginCallback
+ 0x08003260 0x188 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .text.SCSI_Read10BeginCallback
+ 0x080033e8 0x68 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x080033e8 SCSI_Read10BeginCallback
+ .text.SCSI_Read10ReplyCallback
+ 0x08003450 0xa4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08003450 SCSI_Read10ReplyCallback
.text.SCSI_Write10
- 0x08001d18 0x160 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_ProcessCmd
- 0x08001e78 0xf0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x08001e78 SCSI_ProcessCmd
- .text.MSC_BOT_Abort
- 0x08001f68 0x3c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .text.MSC_BOT_CBW_Decode
- 0x08001fa4 0x74 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .text.MSC_BOT_SendData
- 0x08002018 0x2c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x080034f4 0x210 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .text.SCSI_Write10BeginCallback
+ 0x08003704 0xa4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08003704 SCSI_Write10BeginCallback
+ .text.SCSI_Write10FreePacketCallback
+ 0x080037a8 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x080037a8 SCSI_Write10FreePacketCallback
+ .text.SCSI_Verify10
+ 0x08003800 0x84 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .text.SCSI_CheckAddressRange
+ 0x08003884 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.text.MSC_BOT_Init
- 0x08002044 0x34 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x08002044 MSC_BOT_Init
+ 0x080038dc 0x54 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x080038dc MSC_BOT_Init
.text.MSC_BOT_Reset
- 0x08002078 0x18 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x08002078 MSC_BOT_Reset
+ 0x08003930 0x34 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x08003930 MSC_BOT_Reset
.text.MSC_BOT_DeInit
- 0x08002090 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x08002090 MSC_BOT_DeInit
- .text.MSC_BOT_DataOut
- 0x0800209c 0x30 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x0800209c MSC_BOT_DataOut
- .text.MSC_BOT_SendCSW
- 0x080020cc 0x34 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x080020cc MSC_BOT_SendCSW
+ 0x08003964 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x08003964 MSC_BOT_DeInit
.text.MSC_BOT_DataIn
- 0x08002100 0x38 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x08002100 MSC_BOT_DataIn
+ 0x08003984 0x60 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x08003984 MSC_BOT_DataIn
.text.MSC_BOT_DataIn_Callback
- 0x08002138 0x18 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x08002138 MSC_BOT_DataIn_Callback
+ 0x080039e4 0x28 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x080039e4 MSC_BOT_DataIn_Callback
+ .text.MSC_BOT_DataOut
+ 0x08003a0c 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x08003a0c MSC_BOT_DataOut
.text.MSC_BOT_DataOut_Callback
- 0x08002150 0x18 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x08002150 MSC_BOT_DataOut_Callback
+ 0x08003a64 0x28 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x08003a64 MSC_BOT_DataOut_Callback
+ .text.MSC_BOT_CBW_Decode
+ 0x08003a8c 0xb0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
.text.MSC_BOT_CBW_Decode_Callback
- 0x08002168 0x5c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x08002168 MSC_BOT_CBW_Decode_Callback
+ 0x08003b3c 0xa0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x08003b3c MSC_BOT_CBW_Decode_Callback
+ .text.MSC_BOT_SendData
+ 0x08003bdc 0x50 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ .text.MSC_BOT_SendCSW
+ 0x08003c2c 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x08003c2c MSC_BOT_SendCSW
+ .text.MSC_BOT_Abort
+ 0x08003c84 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
.text.MSC_BOT_CplClrFeature
- 0x080021c4 0x2c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x080021c4 MSC_BOT_CplClrFeature
- .text.USBD_MSC_GetHSCfgDesc
- 0x080021f0 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x080021f0 USBD_MSC_GetHSCfgDesc
- .text.USBD_MSC_GetFSCfgDesc
- 0x080021fc 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x080021fc USBD_MSC_GetFSCfgDesc
- .text.USBD_MSC_GetOtherSpeedCfgDesc
- 0x08002208 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x08002208 USBD_MSC_GetOtherSpeedCfgDesc
- .text.USBD_MSC_GetDeviceQualifierDescriptor
- 0x08002214 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x08002214 USBD_MSC_GetDeviceQualifierDescriptor
+ 0x08003cdc 0x4c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x08003cdc MSC_BOT_CplClrFeature
.text.USBD_MSC_Init
- 0x08002220 0x5c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x08002220 USBD_MSC_Init
+ 0x08003d28 0x90 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x08003d28 USBD_MSC_Init
.text.USBD_MSC_DeInit
- 0x0800227c 0x2c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x0800227c USBD_MSC_DeInit
+ 0x08003db8 0x4c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x08003db8 USBD_MSC_DeInit
.text.USBD_MSC_Setup
- 0x080022a8 0xfc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x080022a8 USBD_MSC_Setup
+ 0x08003e04 0x16c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x08003e04 USBD_MSC_Setup
.text.USBD_MSC_DataIn
- 0x080023a4 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x080023a4 USBD_MSC_DataIn
+ 0x08003f70 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x08003f70 USBD_MSC_DataIn
.text.USBD_MSC_DataOut
- 0x080023b0 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x080023b0 USBD_MSC_DataOut
+ 0x08003f90 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x08003f90 USBD_MSC_DataOut
.text.USBD_MSC_BufferFreed
- 0x080023bc 0x24 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x080023bc USBD_MSC_BufferFreed
- .text.USB_CoreReset
- 0x080023e0 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08003fb0 0x40 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x08003fb0 USBD_MSC_BufferFreed
+ .text.USBD_MSC_GetHSCfgDesc
+ 0x08003ff0 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x08003ff0 USBD_MSC_GetHSCfgDesc
+ .text.USBD_MSC_GetFSCfgDesc
+ 0x08004010 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x08004010 USBD_MSC_GetFSCfgDesc
+ .text.USBD_MSC_GetOtherSpeedCfgDesc
+ 0x08004030 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x08004030 USBD_MSC_GetOtherSpeedCfgDesc
+ .text.USBD_MSC_GetDeviceQualifierDescriptor
+ 0x08004050 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x08004050 USBD_MSC_GetDeviceQualifierDescriptor
.text.USB_CoreInit
- 0x08002418 0x78 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002418 USB_CoreInit
+ 0x08004070 0xa4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004070 USB_CoreInit
.text.USB_EnableGlobalInt
- 0x08002490 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002490 USB_EnableGlobalInt
+ 0x08004114 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004114 USB_EnableGlobalInt
.text.USB_DisableGlobalInt
- 0x0800249c 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x0800249c USB_DisableGlobalInt
+ 0x08004138 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004138 USB_DisableGlobalInt
.text.USB_SetCurrentMode
- 0x080024a8 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x080024a8 USB_SetCurrentMode
+ 0x0800415c 0x50 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x0800415c USB_SetCurrentMode
+ .text.USB_DevInit
+ 0x080041ac 0x258 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x080041ac USB_DevInit
.text.USB_FlushTxFifo
- 0x080024d4 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x080024d4 USB_FlushTxFifo
+ 0x08004404 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004404 USB_FlushTxFifo
.text.USB_FlushRxFifo
- 0x080024f8 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x080024f8 USB_FlushRxFifo
+ 0x08004450 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004450 USB_FlushRxFifo
.text.USB_SetDevSpeed
- 0x08002518 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002518 USB_SetDevSpeed
- .text.USB_DevInit
- 0x08002528 0x144 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002528 USB_DevInit
+ 0x08004494 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004494 USB_SetDevSpeed
.text.USB_GetDevSpeed
- 0x0800266c 0x40 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x0800266c USB_GetDevSpeed
+ 0x080044c4 0x6c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x080044c4 USB_GetDevSpeed
.text.USB_ActivateEndpoint
- 0x080026ac 0x8c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x080026ac USB_ActivateEndpoint
+ 0x08004530 0x114 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004530 USB_ActivateEndpoint
.text.USB_DeactivateEndpoint
- 0x08002738 0x7c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002738 USB_DeactivateEndpoint
+ 0x08004644 0xf8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004644 USB_DeactivateEndpoint
+ .text.USB_EPStartXfer
+ 0x0800473c 0x484 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x0800473c USB_EPStartXfer
.text.USB_EP0StartXfer
- 0x080027b4 0x158 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x080027b4 USB_EP0StartXfer
+ 0x08004bc0 0x2bc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004bc0 USB_EP0StartXfer
.text.USB_WritePacket
- 0x0800290c 0x28 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x0800290c USB_WritePacket
- .text.USB_EPStartXfer
- 0x08002934 0x258 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002934 USB_EPStartXfer
+ 0x08004e7c 0x70 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004e7c USB_WritePacket
.text.USB_ReadPacket
- 0x08002b8c 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002b8c USB_ReadPacket
+ 0x08004eec 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004eec USB_ReadPacket
.text.USB_EPSetStall
- 0x08002bb8 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002bb8 USB_EPSetStall
+ 0x08004f40 0xe4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004f40 USB_EPSetStall
.text.USB_EPClearStall
- 0x08002c10 0x60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002c10 USB_EPClearStall
+ 0x08005024 0xdc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08005024 USB_EPClearStall
+ .text.USB_StopDevice
+ 0x08005100 0x88 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08005100 USB_StopDevice
.text.USB_SetDevAddress
- 0x08002c70 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002c70 USB_SetDevAddress
+ 0x08005188 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08005188 USB_SetDevAddress
.text.USB_DevConnect
- 0x08002c90 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002c90 USB_DevConnect
+ 0x080051d4 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x080051d4 USB_DevConnect
.text.USB_DevDisconnect
- 0x08002ca8 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002ca8 USB_DevDisconnect
+ 0x08005204 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08005204 USB_DevDisconnect
.text.USB_ReadInterrupts
- 0x08002cc0 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002cc0 USB_ReadInterrupts
+ 0x08005234 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08005234 USB_ReadInterrupts
.text.USB_ReadDevAllOutEpInterrupt
- 0x08002cc8 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002cc8 USB_ReadDevAllOutEpInterrupt
+ 0x08005260 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08005260 USB_ReadDevAllOutEpInterrupt
.text.USB_ReadDevAllInEpInterrupt
- 0x08002cd8 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002cd8 USB_ReadDevAllInEpInterrupt
+ 0x08005290 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08005290 USB_ReadDevAllInEpInterrupt
.text.USB_ReadDevOutEPInterrupt
- 0x08002ce8 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002ce8 USB_ReadDevOutEPInterrupt
+ 0x080052c0 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x080052c0 USB_ReadDevOutEPInterrupt
.text.USB_ReadDevInEPInterrupt
- 0x08002cfc 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002cfc USB_ReadDevInEPInterrupt
+ 0x080052f8 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x080052f8 USB_ReadDevInEPInterrupt
.text.USB_GetMode
- 0x08002d20 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002d20 USB_GetMode
+ 0x0800534c 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x0800534c USB_GetMode
.text.USB_ActivateSetup
- 0x08002d28 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002d28 USB_ActivateSetup
+ 0x08005368 0x6c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08005368 USB_ActivateSetup
.text.USB_EP0_OutStart
- 0x08002d60 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002d60 USB_EP0_OutStart
- .text.SPI_WaitOnFlagUntilTimeout
- 0x08002da4 0xe4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x080053d4 0x8c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x080053d4 USB_EP0_OutStart
+ .text.USB_CoreReset
+ 0x08005460 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.HAL_SPI_Init
- 0x08002e88 0x84 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x08002e88 HAL_SPI_Init
- .text.HAL_SPI_Transmit_DMA
- 0x08002f0c 0xd0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x08002f0c HAL_SPI_Transmit_DMA
- .text.HAL_SPI_TransmitReceive_DMA
- 0x08002fdc 0x13c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x08002fdc HAL_SPI_TransmitReceive_DMA
- .text.HAL_SPI_Receive_DMA
- 0x08003118 0xf0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x08003118 HAL_SPI_Receive_DMA
- .text.HAL_SPI_TxRxCpltCallback
- 0x08003208 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x08003208 HAL_SPI_TxRxCpltCallback
- .text.HAL_SPI_TxHalfCpltCallback
- 0x0800320c 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x0800320c HAL_SPI_TxHalfCpltCallback
- .text.SPI_DMAHalfTransmitCplt
- 0x08003210 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.HAL_SPI_RxHalfCpltCallback
- 0x0800321c 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x0800321c HAL_SPI_RxHalfCpltCallback
- .text.SPI_DMAHalfReceiveCplt
- 0x08003220 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.HAL_SPI_TxRxHalfCpltCallback
- 0x0800322c 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x0800322c HAL_SPI_TxRxHalfCpltCallback
- .text.SPI_DMAHalfTransmitReceiveCplt
- 0x08003230 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.SPI_DMAError
- 0x0800323c 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.SPI_DMATransmitCplt
- 0x0800325c 0x78 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.SPI_DMAReceiveCplt
- 0x080032d4 0xc8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.SPI_DMATransmitReceiveCplt
- 0x0800339c 0xcc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x080054c8 0xcc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x080054c8 HAL_SPI_Init
+ .text.HAL_SPI_TransmitReceive_IT
+ 0x08005594 0x12c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x08005594 HAL_SPI_TransmitReceive_IT
+ .text.HAL_SPI_IRQHandler
+ 0x080056c0 0x194 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x080056c0 HAL_SPI_IRQHandler
+ .text.HAL_SPI_TxCpltCallback
+ 0x08005854 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x08005854 HAL_SPI_TxCpltCallback
+ .text.HAL_SPI_RxCpltCallback
+ 0x08005868 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x08005868 HAL_SPI_RxCpltCallback
+ .text.SPI_TxCloseIRQHandler
+ 0x0800587c 0xd4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_TxISR
+ 0x08005950 0x74 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_RxCloseIRQHandler
+ 0x080059c4 0x138 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_2LinesRxISR
+ 0x08005afc 0x60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_WaitOnFlagUntilTimeout
+ 0x08005b5c 0x148 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_RCC_OscConfig
- 0x08003468 0x310 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- 0x08003468 HAL_RCC_OscConfig
+ 0x08005ca4 0x3c8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x08005ca4 HAL_RCC_OscConfig
.text.HAL_RCC_ClockConfig
- 0x08003778 0x22c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- 0x08003778 HAL_RCC_ClockConfig
+ 0x0800606c 0x2b0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x0800606c HAL_RCC_ClockConfig
.text.HAL_RCC_GetSysClockFreq
- 0x080039a4 0x98 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- 0x080039a4 HAL_RCC_GetSysClockFreq
+ 0x0800631c 0x118 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x0800631c HAL_RCC_GetSysClockFreq
.text.HAL_RCC_GetHCLKFreq
- 0x08003a3c 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- 0x08003a3c HAL_RCC_GetHCLKFreq
+ 0x08006434 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x08006434 HAL_RCC_GetHCLKFreq
.text.HAL_PCDEx_SetTxFiFo
- 0x08003a74 0x48 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- 0x08003a74 HAL_PCDEx_SetTxFiFo
+ 0x0800648c 0x9c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ 0x0800648c HAL_PCDEx_SetTxFiFo
.text.HAL_PCDEx_SetRxFiFo
- 0x08003abc 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- 0x08003abc HAL_PCDEx_SetRxFiFo
- .text.PCD_WriteEmptyTxFifo
- 0x08003ac4 0xb0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x08006528 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ 0x08006528 HAL_PCDEx_SetRxFiFo
.text.HAL_PCD_Init
- 0x08003b74 0xe0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x08003b74 HAL_PCD_Init
+ 0x0800654c 0x210 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x0800654c HAL_PCD_Init
.text.HAL_PCD_Start
- 0x08003c54 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x08003c54 HAL_PCD_Start
+ 0x0800675c 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x0800675c HAL_PCD_Start
+ .text.HAL_PCD_Stop
+ 0x080067a0 0x50 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x080067a0 HAL_PCD_Stop
.text.HAL_PCD_IRQHandler
- 0x08003c80 0x450 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x08003c80 HAL_PCD_IRQHandler
+ 0x080067f0 0x764 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x080067f0 HAL_PCD_IRQHandler
.text.HAL_PCD_SetAddress
- 0x080040d0 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x080040d0 HAL_PCD_SetAddress
+ 0x08006f54 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x08006f54 HAL_PCD_SetAddress
.text.HAL_PCD_EP_Open
- 0x080040f4 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x080040f4 HAL_PCD_EP_Open
+ 0x08006f98 0xd0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x08006f98 HAL_PCD_EP_Open
.text.HAL_PCD_EP_Close
- 0x0800415c 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x0800415c HAL_PCD_EP_Close
+ 0x08007068 0x94 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x08007068 HAL_PCD_EP_Close
.text.HAL_PCD_EP_Receive
- 0x080041b4 0x6c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x080041b4 HAL_PCD_EP_Receive
+ 0x080070fc 0xb8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x080070fc HAL_PCD_EP_Receive
.text.HAL_PCD_EP_GetRxCount
- 0x08004220 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x08004220 HAL_PCD_EP_GetRxCount
+ 0x080071b4 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x080071b4 HAL_PCD_EP_GetRxCount
.text.HAL_PCD_EP_Transmit
- 0x08004234 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x08004234 HAL_PCD_EP_Transmit
+ 0x080071e8 0xb8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x080071e8 HAL_PCD_EP_Transmit
.text.HAL_PCD_EP_SetStall
- 0x0800429c 0x64 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x0800429c HAL_PCD_EP_SetStall
+ 0x080072a0 0xb8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x080072a0 HAL_PCD_EP_SetStall
.text.HAL_PCD_EP_ClrStall
- 0x08004300 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x08004300 HAL_PCD_EP_ClrStall
+ 0x08007358 0x94 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x08007358 HAL_PCD_EP_ClrStall
.text.HAL_PCD_EP_Flush
- 0x08004358 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x08004358 HAL_PCD_EP_Flush
+ 0x080073ec 0x5c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x080073ec HAL_PCD_EP_Flush
+ .text.PCD_WriteEmptyTxFifo
+ 0x08007448 0x118 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_GPIO_Init
- 0x08004390 0x1cc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- 0x08004390 HAL_GPIO_Init
- .text.DMA_SetConfig
- 0x0800455c 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- .text.HAL_DMA_Init
- 0x08004588 0x7c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- 0x08004588 HAL_DMA_Init
- .text.HAL_DMA_Start_IT
- 0x08004604 0x6c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- 0x08004604 HAL_DMA_Start_IT
- .text.HAL_DMA_IRQHandler
- 0x08004670 0x236c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- 0x08004670 HAL_DMA_IRQHandler
+ 0x08007560 0x32c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x08007560 HAL_GPIO_Init
+ .text.NVIC_SetPriorityGrouping
+ 0x0800788c 0x48 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_GetPriorityGrouping
+ 0x080078d4 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_EnableIRQ
+ 0x080078f0 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_SetPriority
+ 0x08007920 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_EncodePriority
+ 0x08007974 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.SysTick_Config
+ 0x080079dc 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_SetPriorityGrouping
- 0x080069dc 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- 0x080069dc HAL_NVIC_SetPriorityGrouping
+ 0x08007a18 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x08007a18 HAL_NVIC_SetPriorityGrouping
.text.HAL_NVIC_SetPriority
- 0x08006a00 0x64 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- 0x08006a00 HAL_NVIC_SetPriority
+ 0x08007a2c 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x08007a2c HAL_NVIC_SetPriority
.text.HAL_NVIC_EnableIRQ
- 0x08006a64 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- 0x08006a64 HAL_NVIC_EnableIRQ
+ 0x08007a64 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x08007a64 HAL_NVIC_EnableIRQ
.text.HAL_SYSTICK_Config
- 0x08006a7c 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- 0x08006a7c HAL_SYSTICK_Config
- .text.HAL_InitTick
- 0x08006a9c 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- 0x08006a9c HAL_InitTick
+ 0x08007a80 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x08007a80 HAL_SYSTICK_Config
+ .text.HAL_SYSTICK_CLKSourceConfig
+ 0x08007a98 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x08007a98 HAL_SYSTICK_CLKSourceConfig
.text.HAL_Init
- 0x08006ab8 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- 0x08006ab8 HAL_Init
+ 0x08007ad0 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x08007ad0 HAL_Init
+ .text.HAL_InitTick
+ 0x08007b14 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x08007b14 HAL_InitTick
.text.HAL_IncTick
- 0x08006aec 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- 0x08006aec HAL_IncTick
+ 0x08007b40 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x08007b40 HAL_IncTick
.text.HAL_GetTick
- 0x08006afc 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- 0x08006afc HAL_GetTick
+ 0x08007b5c 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x08007b5c HAL_GetTick
.text.HAL_Delay
- 0x08006b08 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- 0x08006b08 HAL_Delay
+ 0x08007b74 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x08007b74 HAL_Delay
.text.SystemInit
- 0x08006b24 0x40 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
- 0x08006b24 SystemInit
+ 0x08007ba0 0x5c Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ 0x08007ba0 SystemInit
.text.Reset_Handler
- 0x08006b64 0x4c Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
- 0x08006b64 Reset_Handler
+ 0x08007bfc 0x4c Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
+ 0x08007bfc Reset_Handler
.text.Default_Handler
- 0x08006bb0 0x2 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
- 0x08006bb0 RTC_Alarm_IRQHandler
- 0x08006bb0 HASH_RNG_IRQHandler
- 0x08006bb0 EXTI2_IRQHandler
- 0x08006bb0 TIM8_CC_IRQHandler
- 0x08006bb0 DebugMon_Handler
- 0x08006bb0 TIM1_CC_IRQHandler
- 0x08006bb0 DMA2_Stream5_IRQHandler
- 0x08006bb0 HardFault_Handler
- 0x08006bb0 DMA1_Stream5_IRQHandler
- 0x08006bb0 PVD_IRQHandler
- 0x08006bb0 SDIO_IRQHandler
- 0x08006bb0 TAMP_STAMP_IRQHandler
- 0x08006bb0 PendSV_Handler
- 0x08006bb0 NMI_Handler
- 0x08006bb0 CAN2_RX1_IRQHandler
- 0x08006bb0 TIM8_TRG_COM_TIM14_IRQHandler
- 0x08006bb0 TIM1_UP_TIM10_IRQHandler
- 0x08006bb0 TIM8_UP_TIM13_IRQHandler
- 0x08006bb0 I2C3_ER_IRQHandler
- 0x08006bb0 EXTI0_IRQHandler
- 0x08006bb0 I2C2_EV_IRQHandler
- 0x08006bb0 DMA1_Stream2_IRQHandler
- 0x08006bb0 CAN1_RX0_IRQHandler
- 0x08006bb0 FPU_IRQHandler
- 0x08006bb0 OTG_HS_WKUP_IRQHandler
- 0x08006bb0 UsageFault_Handler
- 0x08006bb0 CAN2_SCE_IRQHandler
- 0x08006bb0 SPI1_IRQHandler
- 0x08006bb0 TIM6_DAC_IRQHandler
- 0x08006bb0 TIM1_BRK_TIM9_IRQHandler
- 0x08006bb0 CAN2_RX0_IRQHandler
- 0x08006bb0 USART6_IRQHandler
- 0x08006bb0 USART3_IRQHandler
- 0x08006bb0 CAN1_RX1_IRQHandler
- 0x08006bb0 UART5_IRQHandler
- 0x08006bb0 DMA2_Stream0_IRQHandler
- 0x08006bb0 TIM4_IRQHandler
- 0x08006bb0 I2C1_EV_IRQHandler
- 0x08006bb0 DMA1_Stream6_IRQHandler
- 0x08006bb0 DMA1_Stream1_IRQHandler
- 0x08006bb0 UART4_IRQHandler
- 0x08006bb0 TIM3_IRQHandler
- 0x08006bb0 RCC_IRQHandler
- 0x08006bb0 TIM8_BRK_TIM12_IRQHandler
- 0x08006bb0 Default_Handler
- 0x08006bb0 EXTI15_10_IRQHandler
- 0x08006bb0 ADC_IRQHandler
- 0x08006bb0 DMA1_Stream7_IRQHandler
- 0x08006bb0 TIM7_IRQHandler
- 0x08006bb0 CAN2_TX_IRQHandler
- 0x08006bb0 TIM5_IRQHandler
- 0x08006bb0 DMA2_Stream7_IRQHandler
- 0x08006bb0 I2C3_EV_IRQHandler
- 0x08006bb0 EXTI9_5_IRQHandler
- 0x08006bb0 RTC_WKUP_IRQHandler
- 0x08006bb0 SPI2_IRQHandler
- 0x08006bb0 OTG_HS_EP1_IN_IRQHandler
- 0x08006bb0 MemManage_Handler
- 0x08006bb0 DMA1_Stream0_IRQHandler
- 0x08006bb0 CAN1_TX_IRQHandler
- 0x08006bb0 SVC_Handler
- 0x08006bb0 EXTI4_IRQHandler
- 0x08006bb0 FSMC_IRQHandler
- 0x08006bb0 OTG_HS_EP1_OUT_IRQHandler
- 0x08006bb0 WWDG_IRQHandler
- 0x08006bb0 TIM2_IRQHandler
- 0x08006bb0 OTG_FS_WKUP_IRQHandler
- 0x08006bb0 TIM1_TRG_COM_TIM11_IRQHandler
- 0x08006bb0 OTG_HS_IRQHandler
- 0x08006bb0 EXTI1_IRQHandler
- 0x08006bb0 USART2_IRQHandler
- 0x08006bb0 I2C2_ER_IRQHandler
- 0x08006bb0 DMA2_Stream1_IRQHandler
- 0x08006bb0 CAN1_SCE_IRQHandler
- 0x08006bb0 FLASH_IRQHandler
- 0x08006bb0 DMA2_Stream4_IRQHandler
- 0x08006bb0 BusFault_Handler
- 0x08006bb0 USART1_IRQHandler
- 0x08006bb0 SPI3_IRQHandler
- 0x08006bb0 DMA1_Stream4_IRQHandler
- 0x08006bb0 I2C1_ER_IRQHandler
- 0x08006bb0 DMA2_Stream6_IRQHandler
- 0x08006bb0 DMA1_Stream3_IRQHandler
- *fill* 0x08006bb2 0x2
- .text.malloc 0x08006bb4 0x10 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o)
- 0x08006bb4 malloc
- .text.free 0x08006bc4 0x10 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o)
- 0x08006bc4 free
- .text._free_r 0x08006bd4 0x88 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o)
- 0x08006bd4 _free_r
+ 0x08007c48 0x2 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
+ 0x08007c48 RTC_Alarm_IRQHandler
+ 0x08007c48 HASH_RNG_IRQHandler
+ 0x08007c48 EXTI2_IRQHandler
+ 0x08007c48 TIM8_CC_IRQHandler
+ 0x08007c48 DebugMon_Handler
+ 0x08007c48 TIM1_CC_IRQHandler
+ 0x08007c48 DMA2_Stream5_IRQHandler
+ 0x08007c48 HardFault_Handler
+ 0x08007c48 DMA1_Stream5_IRQHandler
+ 0x08007c48 PVD_IRQHandler
+ 0x08007c48 SDIO_IRQHandler
+ 0x08007c48 TAMP_STAMP_IRQHandler
+ 0x08007c48 PendSV_Handler
+ 0x08007c48 NMI_Handler
+ 0x08007c48 CAN2_RX1_IRQHandler
+ 0x08007c48 TIM8_TRG_COM_TIM14_IRQHandler
+ 0x08007c48 TIM1_UP_TIM10_IRQHandler
+ 0x08007c48 TIM8_UP_TIM13_IRQHandler
+ 0x08007c48 I2C3_ER_IRQHandler
+ 0x08007c48 EXTI0_IRQHandler
+ 0x08007c48 I2C2_EV_IRQHandler
+ 0x08007c48 DMA1_Stream2_IRQHandler
+ 0x08007c48 CAN1_RX0_IRQHandler
+ 0x08007c48 FPU_IRQHandler
+ 0x08007c48 OTG_HS_WKUP_IRQHandler
+ 0x08007c48 UsageFault_Handler
+ 0x08007c48 CAN2_SCE_IRQHandler
+ 0x08007c48 DMA2_Stream2_IRQHandler
+ 0x08007c48 TIM6_DAC_IRQHandler
+ 0x08007c48 TIM1_BRK_TIM9_IRQHandler
+ 0x08007c48 CAN2_RX0_IRQHandler
+ 0x08007c48 DMA2_Stream3_IRQHandler
+ 0x08007c48 USART6_IRQHandler
+ 0x08007c48 USART3_IRQHandler
+ 0x08007c48 CAN1_RX1_IRQHandler
+ 0x08007c48 UART5_IRQHandler
+ 0x08007c48 DMA2_Stream0_IRQHandler
+ 0x08007c48 TIM4_IRQHandler
+ 0x08007c48 I2C1_EV_IRQHandler
+ 0x08007c48 DMA1_Stream6_IRQHandler
+ 0x08007c48 DMA1_Stream1_IRQHandler
+ 0x08007c48 UART4_IRQHandler
+ 0x08007c48 TIM3_IRQHandler
+ 0x08007c48 RCC_IRQHandler
+ 0x08007c48 TIM8_BRK_TIM12_IRQHandler
+ 0x08007c48 Default_Handler
+ 0x08007c48 EXTI15_10_IRQHandler
+ 0x08007c48 ADC_IRQHandler
+ 0x08007c48 DMA1_Stream7_IRQHandler
+ 0x08007c48 TIM7_IRQHandler
+ 0x08007c48 CAN2_TX_IRQHandler
+ 0x08007c48 TIM5_IRQHandler
+ 0x08007c48 DMA2_Stream7_IRQHandler
+ 0x08007c48 I2C3_EV_IRQHandler
+ 0x08007c48 EXTI9_5_IRQHandler
+ 0x08007c48 RTC_WKUP_IRQHandler
+ 0x08007c48 SPI2_IRQHandler
+ 0x08007c48 OTG_HS_EP1_IN_IRQHandler
+ 0x08007c48 MemManage_Handler
+ 0x08007c48 DMA1_Stream0_IRQHandler
+ 0x08007c48 CAN1_TX_IRQHandler
+ 0x08007c48 SVC_Handler
+ 0x08007c48 EXTI4_IRQHandler
+ 0x08007c48 FSMC_IRQHandler
+ 0x08007c48 OTG_HS_EP1_OUT_IRQHandler
+ 0x08007c48 WWDG_IRQHandler
+ 0x08007c48 TIM2_IRQHandler
+ 0x08007c48 OTG_FS_WKUP_IRQHandler
+ 0x08007c48 TIM1_TRG_COM_TIM11_IRQHandler
+ 0x08007c48 OTG_HS_IRQHandler
+ 0x08007c48 EXTI1_IRQHandler
+ 0x08007c48 USART2_IRQHandler
+ 0x08007c48 I2C2_ER_IRQHandler
+ 0x08007c48 DMA2_Stream1_IRQHandler
+ 0x08007c48 CAN1_SCE_IRQHandler
+ 0x08007c48 FLASH_IRQHandler
+ 0x08007c48 DMA2_Stream4_IRQHandler
+ 0x08007c48 BusFault_Handler
+ 0x08007c48 USART1_IRQHandler
+ 0x08007c48 SPI3_IRQHandler
+ 0x08007c48 DMA1_Stream4_IRQHandler
+ 0x08007c48 I2C1_ER_IRQHandler
+ 0x08007c48 DMA2_Stream6_IRQHandler
+ 0x08007c48 DMA1_Stream3_IRQHandler
+ *fill* 0x08007c4a 0x2
+ .text.malloc 0x08007c4c 0x10 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o)
+ 0x08007c4c malloc
+ .text.free 0x08007c5c 0x10 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o)
+ 0x08007c5c free
+ .text._free_r 0x08007c6c 0x88 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o)
+ 0x08007c6c _free_r
.text._malloc_r
- 0x08006c5c 0xac /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
- 0x08006c5c _malloc_r
- .text._sbrk_r 0x08006d08 0x20 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o)
- 0x08006d08 _sbrk_r
- .text._sbrk 0x08006d28 0x1c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o)
- 0x08006d28 _sbrk
+ 0x08007cf4 0xac /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
+ 0x08007cf4 _malloc_r
+ .text._sbrk_r 0x08007da0 0x20 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o)
+ 0x08007da0 _sbrk_r
+ .text._sbrk 0x08007dc0 0x1c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o)
+ 0x08007dc0 _sbrk
*(.init)
*(.fini)
*(.rodata*)
- .rodata.str1.4
- 0x08006d44 0x54 Src/usbd_descriptors.o
.rodata.STORAGE_Inquirydata_FS
- 0x08006d98 0x24 Src/usbd_descriptors.o
- 0x08006d98 STORAGE_Inquirydata_FS
+ 0x08007ddc 0x24 Src/usbd_descriptors.o
+ 0x08007ddc STORAGE_Inquirydata_FS
+ .rodata 0x08007e00 0x54 Src/usbd_descriptors.o
.rodata.MSC_Page00_Inquiry_Data
- 0x08006dbc 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- 0x08006dbc MSC_Page00_Inquiry_Data
- .rodata.MSC_Mode_Sense10_data
- 0x08006dc4 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- 0x08006dc4 MSC_Mode_Sense10_data
+ 0x08007e54 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ 0x08007e54 MSC_Page00_Inquiry_Data
.rodata.MSC_Mode_Sense6_data
- 0x08006dcc 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- 0x08006dcc MSC_Mode_Sense6_data
+ 0x08007e5c 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ 0x08007e5c MSC_Mode_Sense6_data
+ .rodata.MSC_Mode_Sense10_data
+ 0x08007e64 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ 0x08007e64 MSC_Mode_Sense10_data
.rodata.APBAHBPrescTable
- 0x08006dd4 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- 0x08006dd4 APBAHBPrescTable
+ 0x08007e6c 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x08007e6c APBAHBPrescTable
.rodata.str1.1
- 0x08006de4 0x2 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-impure.o)
+ 0x08007e7c 0x2 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-impure.o)
*(.eh_frame*)
- 0x08006de6 __etext = .
+ 0x08007e7e __etext = .
-.glue_7 0x08006de8 0x0
+.glue_7 0x08007e80 0x0
.glue_7 0x00000000 0x0 linker stubs
-.glue_7t 0x08006de8 0x0
+.glue_7t 0x08007e80 0x0
.glue_7t 0x00000000 0x0 linker stubs
-.vfp11_veneer 0x08006de8 0x0
+.vfp11_veneer 0x08007e80 0x0
.vfp11_veneer 0x00000000 0x0 linker stubs
-.v4_bx 0x08006de8 0x0
+.v4_bx 0x08007e80 0x0
.v4_bx 0x00000000 0x0 linker stubs
-.iplt 0x08006de8 0x0
+.iplt 0x08007e80 0x0
.iplt 0x00000000 0x0 Src/usbd_descriptors.o
-.rel.dyn 0x08006de8 0x0
+.rel.dyn 0x08007e80 0x0
.rel.iplt 0x00000000 0x0 Src/usbd_descriptors.o
-.data 0x20000000 0x144 load address 0x08006de6
+.data 0x20000000 0x144 load address 0x08007e7e
0x20000000 __data_start__ = .
*(vtable)
*(.data*)
.data.FS_Desc 0x20000000 0x1c Src/usbd_descriptors.o
0x20000000 FS_Desc
- .data.USBD_LangIDDesc
- 0x2000001c 0x4 Src/usbd_descriptors.o
- 0x2000001c USBD_LangIDDesc
.data.USBD_FS_DeviceDesc
- 0x20000020 0x14 Src/usbd_descriptors.o
- 0x20000020 USBD_FS_DeviceDesc
- .data.USBD_MSC_OtherSpeedCfgDesc
- 0x20000034 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x20000034 USBD_MSC_OtherSpeedCfgDesc
- .data.USBD_MSC_DeviceQualifierDesc
- 0x20000054 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x20000054 USBD_MSC_DeviceQualifierDesc
- .data.USBD_MSC_CfgHSDesc
- 0x20000060 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x20000060 USBD_MSC_CfgHSDesc
+ 0x2000001c 0x14 Src/usbd_descriptors.o
+ 0x2000001c USBD_FS_DeviceDesc
+ .data.USBD_LangIDDesc
+ 0x20000030 0x4 Src/usbd_descriptors.o
+ 0x20000030 USBD_LangIDDesc
.data.USBD_MSC
- 0x20000080 0x3c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x20000080 USBD_MSC
+ 0x20000034 0x3c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x20000034 USBD_MSC
+ .data.USBD_MSC_CfgHSDesc
+ 0x20000070 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x20000070 USBD_MSC_CfgHSDesc
.data.USBD_MSC_CfgFSDesc
- 0x200000bc 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x200000bc USBD_MSC_CfgFSDesc
+ 0x20000090 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x20000090 USBD_MSC_CfgFSDesc
+ .data.USBD_MSC_OtherSpeedCfgDesc
+ 0x200000b0 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x200000b0 USBD_MSC_OtherSpeedCfgDesc
+ .data.USBD_MSC_DeviceQualifierDesc
+ 0x200000d0 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x200000d0 USBD_MSC_DeviceQualifierDesc
.data.SystemCoreClock
0x200000dc 0x4 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
0x200000dc SystemCoreClock
@@ -3762,77 +4060,106 @@ END GROUP
0x20000140 _impure_ptr
0x20000144 __data_end__ = .
-.igot.plt 0x20000144 0x0 load address 0x08006f2c
+.igot.plt 0x20000144 0x0 load address 0x08007fc4
.igot.plt 0x00000000 0x0 Src/usbd_descriptors.o
-.bss 0x20000148 0xd58 load address 0x08006f30
+.bss 0x20000148 0xcc8 load address 0x08007fc8
0x20000148 . = ALIGN (0x4)
0x20000148 __bss_start__ = .
*(.bss*)
- .bss.cfgidx.8045
- 0x20000148 0x1 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- *fill* 0x20000149 0x3
- .bss.uwTick 0x2000014c 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .bss.UpstreamState
+ 0x20000148 0x1 Src/upstream_statemachine.o
+ 0x20000148 UpstreamState
+ .bss.ConfiguredDeviceClass
+ 0x20000149 0x1 Src/upstream_statemachine.o
+ 0x20000149 ConfiguredDeviceClass
+ *fill* 0x2000014a 0x2
+ .bss.NextTxPacket
+ 0x2000014c 0x4 Src/upstream_spi.o
+ 0x2000014c NextTxPacket
+ .bss.UpstreamInterfaceState
+ 0x20000150 0x1 Src/upstream_spi.o
+ 0x20000150 UpstreamInterfaceState
+ *fill* 0x20000151 0x3
+ .bss.PendingFreePacketCallback
+ 0x20000154 0x4 Src/upstream_spi.o
+ 0x20000154 PendingFreePacketCallback
+ .bss.ReceivePacketCallback
+ 0x20000158 0x4 Src/upstream_spi.o
+ 0x20000158 ReceivePacketCallback
+ .bss.TxOkInterruptReceived
+ 0x2000015c 0x1 Src/upstream_spi.o
+ 0x2000015c TxOkInterruptReceived
+ .bss.SpiInterruptCompleted
+ 0x2000015d 0x1 Src/upstream_spi.o
+ 0x2000015d SpiInterruptCompleted
+ .bss.FaultLedBlinkRate
+ 0x2000015e 0x2 Src/led.o
+ 0x2000015e FaultLedBlinkRate
+ .bss.FaultLedBlinkCounter
+ 0x20000160 0x2 Src/led.o
+ 0x20000160 FaultLedBlinkCounter
+ .bss.FaultLedState
+ 0x20000162 0x1 Src/led.o
+ 0x20000162 FaultLedState
+ .bss.cfgidx.8046
+ 0x20000163 0x1 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .bss.uwTick 0x20000164 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.bss.__malloc_sbrk_start
- 0x20000150 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
- 0x20000150 __malloc_sbrk_start
+ 0x20000168 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
+ 0x20000168 __malloc_sbrk_start
.bss.__malloc_free_list
- 0x20000154 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
- 0x20000154 __malloc_free_list
+ 0x2000016c 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
+ 0x2000016c __malloc_free_list
.bss.heap_end.4079
- 0x20000158 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o)
+ 0x20000170 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o)
*(COMMON)
- COMMON 0x2000015c 0x200 Src/usbd_descriptors.o
- 0x2000015c USBD_StrDesc
- COMMON 0x2000035c 0x3b0 Src/usbd_config.o
- 0x2000035c hpcd_USB_OTG_FS
- COMMON 0x2000070c 0x224 Src/usb_device.o
- 0x2000070c hUsbDeviceFS
- COMMON 0x20000930 0xa0 Src/hal_msp.o
- 0x20000930 spiRxDmaHandle
- 0x20000980 spiTxDmaHandle
- COMMON 0x200009d0 0x488 Src/downstream_spi.o
- 0x200009d0 SentCommand
- 0x200009d1 DownstreamInterfaceState
- 0x200009d4 DownstreamPacket1
- 0x20000be0 ReceivePacketCallback
- 0x20000be4 DownstreamPacket0
- 0x20000df0 CurrentWorkingPacket
- 0x20000df4 SentCommandClass
- 0x20000df8 NextTxPacket
- 0x20000dfc hspi1
- 0x20000e54 PendingFreePacketCallback
- COMMON 0x20000e58 0x28 Src/downstream_interface_msc_mock.o
- 0x20000e58 ReadStreamPacket
- 0x20000e60 BlockStart
- 0x20000e68 ReadStreamBusy
- 0x20000e6c GetCapacityCallback
- 0x20000e70 BlockCount
- 0x20000e74 TestReadyCallback
- 0x20000e78 GetStreamDataCallback
- 0x20000e7c ByteCount
- COMMON 0x20000e80 0x14 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x20000e80 SCSI_ProcessCmd_hmsc
- 0x20000e84 SCSI_ProcessCmd_params
- 0x20000e88 SCSI_ProcessCmd_lun
- 0x20000e8c SCSI_ProcessCmd_callback
- 0x20000e90 SCSI_ProcessCmd_pdev
- COMMON 0x20000e94 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x20000e94 MSC_BOT_pdev
- 0x20000e98 MSC_BOT_hmsc
- COMMON 0x20000e9c 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o)
- 0x20000e9c errno
- 0x20000ea0 . = ALIGN (0x4)
- 0x20000ea0 __bss_end__ = .
+ COMMON 0x20000174 0x200 Src/usbd_descriptors.o
+ 0x20000174 USBD_StrDesc
+ COMMON 0x20000374 0x3b4 Src/usbd_config.o
+ 0x20000374 hpcd_USB_OTG_FS
+ COMMON 0x20000728 0x224 Src/usb_device.o
+ 0x20000728 hUsbDeviceFS
+ COMMON 0x2000094c 0x478 Src/upstream_spi.o
+ 0x2000094c TemporaryIncomingPacketLength
+ 0x20000950 SentCommand
+ 0x20000954 UpstreamPacket1
+ 0x20000b5c CurrentWorkingPacket
+ 0x20000b60 UpstreamPacket0
+ 0x20000d68 SentCommandClass
+ 0x20000d6c Hspi1
+ *fill* 0x20000dc4 0x4
+ COMMON 0x20000dc8 0x28 Src/upstream_msc.o
+ 0x20000dc8 ReadStreamPacket
+ 0x20000dd0 BlockStart
+ 0x20000dd8 ReadStreamBusy
+ 0x20000ddc GetCapacityCallback
+ 0x20000de0 BlockCount
+ 0x20000de4 TestReadyCallback
+ 0x20000de8 GetStreamDataCallback
+ 0x20000dec ByteCount
+ COMMON 0x20000df0 0x14 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x20000df0 SCSI_ProcessCmd_hmsc
+ 0x20000df4 SCSI_ProcessCmd_params
+ 0x20000df8 SCSI_ProcessCmd_lun
+ 0x20000dfc SCSI_ProcessCmd_callback
+ 0x20000e00 SCSI_ProcessCmd_pdev
+ COMMON 0x20000e04 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x20000e04 MSC_BOT_pdev
+ 0x20000e08 MSC_BOT_hmsc
+ COMMON 0x20000e0c 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o)
+ 0x20000e0c errno
+ 0x20000e10 . = ALIGN (0x4)
+ 0x20000e10 __bss_end__ = .
-.heap 0x20000ea0 0x0
- 0x20000ea0 __HeapBase = .
- 0x20000ea0 __end__ = .
- 0x20000ea0 end = __end__
+.heap 0x20000e10 0x0
+ 0x20000e10 __HeapBase = .
+ 0x20000e10 __end__ = .
+ 0x20000e10 end = __end__
*(.heap*)
- 0x20000ea0 __HeapLimit = .
+ 0x20000e10 __HeapLimit = .
-.stack_dummy 0x20000ea0 0x0
+.stack_dummy 0x20000e10 0x0
*(.stack*)
0x2001c000 __StackTop = (ORIGIN (SRAM1) + 0x1c000)
0x2001c000 __StackLimit = (__StackTop - SIZEOF (.stack_dummy))
@@ -3855,86 +4182,65 @@ END GROUP
0x10000000 _eccmram = .
OUTPUT(Upstream.elf elf32-littlearm)
-.debug_info 0x00000000 0x1246a
- .debug_info 0x00000000 0x47e Src/usbd_descriptors.o
- .debug_info 0x0000047e 0x18a4 Src/usbd_config.o
- .debug_info 0x00001d22 0x5a1 Src/usb_device.o
- .debug_info 0x000022c3 0x6e5 Src/main.o
- .debug_info 0x000029a8 0x883 Src/interrupts.o
- .debug_info 0x0000322b 0xd1a Src/hal_msp.o
- .debug_info 0x00003f45 0xb4f Src/downstream_spi.o
- .debug_info 0x00004a94 0x712 Src/downstream_interface_msc_mock.o
- .debug_info 0x000051a6 0x7a2 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- .debug_info 0x00005948 0xe56 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .debug_info 0x0000679e 0xced Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .debug_info 0x0000748b 0x14b0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_info 0x0000893b 0x11c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- .debug_info 0x00008a57 0xe19 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .debug_info 0x00009870 0xe05 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_info 0x0000a675 0x165c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .debug_info 0x0000bcd1 0x1652 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .debug_info 0x0000d323 0xf4e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- .debug_info 0x0000e271 0x542 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- .debug_info 0x0000e7b3 0x1580 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .debug_info 0x0000fd33 0x6d1 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .debug_info 0x00010404 0x733 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- .debug_info 0x00010b37 0xca8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .debug_info 0x000117df 0x747 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- .debug_info 0x00011f26 0x4a7 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
- .debug_info 0x000123cd 0x9d Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
-
-.debug_abbrev 0x00000000 0x32a2
- .debug_abbrev 0x00000000 0x15f Src/usbd_descriptors.o
- .debug_abbrev 0x0000015f 0x27e Src/usbd_config.o
- .debug_abbrev 0x000003dd 0x17c Src/usb_device.o
- .debug_abbrev 0x00000559 0x1c5 Src/main.o
- .debug_abbrev 0x0000071e 0x1b1 Src/interrupts.o
- .debug_abbrev 0x000008cf 0x1b2 Src/hal_msp.o
- .debug_abbrev 0x00000a81 0x2e5 Src/downstream_spi.o
- .debug_abbrev 0x00000d66 0x1fe Src/downstream_interface_msc_mock.o
- .debug_abbrev 0x00000f64 0x16d Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- .debug_abbrev 0x000010d1 0x281 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .debug_abbrev 0x00001352 0x217 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .debug_abbrev 0x00001569 0x2cb Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_abbrev 0x00001834 0x78 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- .debug_abbrev 0x000018ac 0x291 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .debug_abbrev 0x00001b3d 0x213 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_abbrev 0x00001d50 0x247 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .debug_abbrev 0x00001f97 0x261 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .debug_abbrev 0x000021f8 0x2ae Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- .debug_abbrev 0x000024a6 0x170 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- .debug_abbrev 0x00002616 0x2b2 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .debug_abbrev 0x000028c8 0x1c2 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .debug_abbrev 0x00002a8a 0x201 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- .debug_abbrev 0x00002c8b 0x2aa Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .debug_abbrev 0x00002f35 0x257 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- .debug_abbrev 0x0000318c 0x104 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
- .debug_abbrev 0x00003290 0x12 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
+.debug_info 0x00000000 0xeb7b
+ .debug_info 0x00000000 0x3bd Src/usbd_descriptors.o
+ .debug_info 0x000003bd 0x12ff Src/usbd_config.o
+ .debug_info 0x000016bc 0x4de Src/usb_device.o
+ .debug_info 0x00001b9a 0x71b Src/upstream_statemachine.o
+ .debug_info 0x000022b5 0xa9d Src/upstream_spi.o
+ .debug_info 0x00002d52 0x55b Src/upstream_msc.o
+ .debug_info 0x000032ad 0x54e Src/main.o
+ .debug_info 0x000037fb 0x1fe Src/led.o
+ .debug_info 0x000039f9 0xa43 Src/interrupts.o
+ .debug_info 0x0000443c 0xa85 Src/hal_msp.o
+ .debug_info 0x00004ec1 0x673 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ .debug_info 0x00005534 0x873 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .debug_info 0x00005da7 0x93c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ .debug_info 0x000066e3 0xc44 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_info 0x00007327 0x11c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ .debug_info 0x00007443 0xa8b Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ .debug_info 0x00007ece 0xa41 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ .debug_info 0x0000890f 0x13d5 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ .debug_info 0x00009ce4 0xf65 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .debug_info 0x0000ac49 0xd54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ .debug_info 0x0000b99d 0x54b Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ .debug_info 0x0000bee8 0xe89 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ .debug_info 0x0000cd71 0x6c6 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ .debug_info 0x0000d437 0xb57 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .debug_info 0x0000df8e 0x6ae Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .debug_info 0x0000e63c 0x4a2 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ .debug_info 0x0000eade 0x9d Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
-.debug_loc 0x00000000 0x7901
- .debug_loc 0x00000000 0x1c3 Src/usbd_descriptors.o
- .debug_loc 0x000001c3 0x6a7 Src/usbd_config.o
- .debug_loc 0x0000086a 0x4a Src/hal_msp.o
- .debug_loc 0x000008b4 0x1b8 Src/downstream_spi.o
- .debug_loc 0x00000a6c 0x36a Src/downstream_interface_msc_mock.o
- .debug_loc 0x00000dd6 0x204 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- .debug_loc 0x00000fda 0xb07 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .debug_loc 0x00001ae1 0x63f Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .debug_loc 0x00002120 0xb26 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_loc 0x00002c46 0x41d Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .debug_loc 0x00003063 0x382 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_loc 0x000033e5 0x1277 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .debug_loc 0x0000465c 0x108c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .debug_loc 0x000056e8 0x853 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- .debug_loc 0x00005f3b 0xd0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- .debug_loc 0x0000600b 0xa96 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .debug_loc 0x00006aa1 0x33e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .debug_loc 0x00006ddf 0x48c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- .debug_loc 0x0000726b 0x4b4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .debug_loc 0x0000771f 0xab Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- .debug_loc 0x000077ca 0x137 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+.debug_abbrev 0x00000000 0x2c0d
+ .debug_abbrev 0x00000000 0x144 Src/usbd_descriptors.o
+ .debug_abbrev 0x00000144 0x20e Src/usbd_config.o
+ .debug_abbrev 0x00000352 0x12e Src/usb_device.o
+ .debug_abbrev 0x00000480 0x1a5 Src/upstream_statemachine.o
+ .debug_abbrev 0x00000625 0x29c Src/upstream_spi.o
+ .debug_abbrev 0x000008c1 0x164 Src/upstream_msc.o
+ .debug_abbrev 0x00000a25 0x138 Src/main.o
+ .debug_abbrev 0x00000b5d 0x106 Src/led.o
+ .debug_abbrev 0x00000c63 0x16d Src/interrupts.o
+ .debug_abbrev 0x00000dd0 0x15c Src/hal_msp.o
+ .debug_abbrev 0x00000f2c 0x12e Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ .debug_abbrev 0x0000105a 0x1ee Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .debug_abbrev 0x00001248 0x1be Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ .debug_abbrev 0x00001406 0x26e Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_abbrev 0x00001674 0x78 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ .debug_abbrev 0x000016ec 0x20b Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ .debug_abbrev 0x000018f7 0x1c7 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ .debug_abbrev 0x00001abe 0x216 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ .debug_abbrev 0x00001cd4 0x20d Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .debug_abbrev 0x00001ee1 0x252 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ .debug_abbrev 0x00002133 0x161 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ .debug_abbrev 0x00002294 0x23b Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ .debug_abbrev 0x000024cf 0x1a4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ .debug_abbrev 0x00002673 0x282 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .debug_abbrev 0x000028f5 0x202 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .debug_abbrev 0x00002af7 0x104 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ .debug_abbrev 0x00002bfb 0x12 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
-.debug_aranges 0x00000000 0xd50
+.debug_aranges 0x00000000 0xe00
.debug_aranges
0x00000000 0x50 Src/usbd_descriptors.o
.debug_aranges
@@ -3942,80 +4248,83 @@ OUTPUT(Upstream.elf elf32-littlearm)
.debug_aranges
0x00000150 0x20 Src/usb_device.o
.debug_aranges
- 0x00000170 0x30 Src/main.o
+ 0x00000170 0x50 Src/upstream_statemachine.o
+ .debug_aranges
+ 0x000001c0 0x98 Src/upstream_spi.o
.debug_aranges
- 0x000001a0 0x40 Src/interrupts.o
+ 0x00000258 0x78 Src/upstream_msc.o
.debug_aranges
- 0x000001e0 0x30 Src/hal_msp.o
+ 0x000002d0 0x30 Src/main.o
.debug_aranges
- 0x00000210 0x80 Src/downstream_spi.o
+ 0x00000300 0x30 Src/led.o
.debug_aranges
- 0x00000290 0x68 Src/downstream_interface_msc_mock.o
+ 0x00000330 0x38 Src/interrupts.o
.debug_aranges
- 0x000002f8 0x50 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x00000368 0x30 Src/hal_msp.o
.debug_aranges
- 0x00000348 0x88 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x00000398 0x50 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.debug_aranges
- 0x000003d0 0xc0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x000003e8 0x88 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.debug_aranges
- 0x00000490 0xc0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x00000470 0xc0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.debug_aranges
- 0x00000550 0x18 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ 0x00000530 0xc0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_aranges
- 0x00000568 0x80 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x000005f0 0x18 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
.debug_aranges
- 0x000005e8 0x68 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x00000608 0x80 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
.debug_aranges
- 0x00000650 0x180 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000688 0x68 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_aranges
- 0x000007d0 0x150 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x000006f0 0x180 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.debug_aranges
- 0x00000920 0x88 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000870 0x158 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.debug_aranges
- 0x000009a8 0x28 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ 0x000009c8 0x88 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.debug_aranges
- 0x000009d0 0x120 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000a50 0x28 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
.debug_aranges
- 0x00000af0 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x00000a78 0x120 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.debug_aranges
- 0x00000b48 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x00000b98 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.debug_aranges
- 0x00000bb0 0x90 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x00000bf0 0x100 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.debug_aranges
- 0x00000c40 0xc0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000cf0 0xc0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.debug_aranges
- 0x00000d00 0x28 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ 0x00000db0 0x28 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
.debug_aranges
- 0x00000d28 0x28 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
+ 0x00000dd8 0x28 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
-.debug_ranges 0x00000000 0xbb0
+.debug_ranges 0x00000000 0xc50
.debug_ranges 0x00000000 0x40 Src/usbd_descriptors.o
.debug_ranges 0x00000040 0xf0 Src/usbd_config.o
.debug_ranges 0x00000130 0x10 Src/usb_device.o
- .debug_ranges 0x00000140 0x20 Src/main.o
- .debug_ranges 0x00000160 0x30 Src/interrupts.o
- .debug_ranges 0x00000190 0x20 Src/hal_msp.o
- .debug_ranges 0x000001b0 0x70 Src/downstream_spi.o
- .debug_ranges 0x00000220 0x58 Src/downstream_interface_msc_mock.o
- .debug_ranges 0x00000278 0x40 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- .debug_ranges 0x000002b8 0x78 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .debug_ranges 0x00000330 0xb0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .debug_ranges 0x000003e0 0xb0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_ranges 0x00000490 0x70 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .debug_ranges 0x00000500 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_ranges 0x00000558 0x170 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .debug_ranges 0x000006c8 0x140 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .debug_ranges 0x00000808 0x78 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- .debug_ranges 0x00000880 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- .debug_ranges 0x00000898 0x110 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .debug_ranges 0x000009a8 0x48 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .debug_ranges 0x000009f0 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- .debug_ranges 0x00000a48 0x80 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .debug_ranges 0x00000ac8 0xb0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- .debug_ranges 0x00000b78 0x18 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
- .debug_ranges 0x00000b90 0x20 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
+ .debug_ranges 0x00000140 0x40 Src/upstream_statemachine.o
+ .debug_ranges 0x00000180 0x88 Src/upstream_spi.o
+ .debug_ranges 0x00000208 0x68 Src/upstream_msc.o
+ .debug_ranges 0x00000270 0x20 Src/main.o
+ .debug_ranges 0x00000290 0x20 Src/led.o
+ .debug_ranges 0x000002b0 0x28 Src/interrupts.o
+ .debug_ranges 0x000002d8 0x20 Src/hal_msp.o
+ .debug_ranges 0x000002f8 0x40 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ .debug_ranges 0x00000338 0x78 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .debug_ranges 0x000003b0 0xb0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ .debug_ranges 0x00000460 0xb0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_ranges 0x00000510 0x70 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ .debug_ranges 0x00000580 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ .debug_ranges 0x000005d8 0x170 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ .debug_ranges 0x00000748 0x148 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .debug_ranges 0x00000890 0x78 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ .debug_ranges 0x00000908 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ .debug_ranges 0x00000920 0x110 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ .debug_ranges 0x00000a30 0x48 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ .debug_ranges 0x00000a78 0xf0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .debug_ranges 0x00000b68 0xb0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .debug_ranges 0x00000c18 0x18 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ .debug_ranges 0x00000c30 0x20 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
-.debug_macro 0x00000000 0x139c8
+.debug_macro 0x00000000 0x13de4
.debug_macro 0x00000000 0x379 Src/usbd_descriptors.o
.debug_macro 0x00000379 0x868 Src/usbd_descriptors.o
.debug_macro 0x00000be1 0x58 Src/usbd_descriptors.o
@@ -4078,131 +4387,139 @@ OUTPUT(Upstream.elf elf32-littlearm)
.debug_macro 0x0000fa78 0x6a Src/usbd_descriptors.o
.debug_macro 0x0000fae2 0x82 Src/usbd_descriptors.o
.debug_macro 0x0000fb64 0x160 Src/usbd_descriptors.o
- .debug_macro 0x0000fcc4 0x22 Src/usbd_descriptors.o
- .debug_macro 0x0000fce6 0x34 Src/usbd_descriptors.o
- .debug_macro 0x0000fd1a 0x316 Src/usbd_config.o
- .debug_macro 0x00010030 0x44 Src/usbd_config.o
- .debug_macro 0x00010074 0x64 Src/usbd_config.o
- .debug_macro 0x000100d8 0x1c Src/usbd_config.o
- .debug_macro 0x000100f4 0x353 Src/usb_device.o
- .debug_macro 0x00010447 0x303 Src/main.o
- .debug_macro 0x0001074a 0x9a Src/main.o
- .debug_macro 0x000107e4 0x308 Src/interrupts.o
- .debug_macro 0x00010aec 0x1b1 Src/hal_msp.o
- .debug_macro 0x00010c9d 0x302 Src/downstream_spi.o
- .debug_macro 0x00010f9f 0x1c Src/downstream_spi.o
- .debug_macro 0x00010fbb 0x30d Src/downstream_interface_msc_mock.o
- .debug_macro 0x000112c8 0x303 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- .debug_macro 0x000115cb 0x307 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .debug_macro 0x000118d2 0x307 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .debug_macro 0x00011bd9 0x377 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_macro 0x00011f50 0x7c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_macro 0x00011fcc 0x22 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_macro 0x00011fee 0x2f0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- .debug_macro 0x000122de 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- .debug_macro 0x000122fa 0x34d Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .debug_macro 0x00012647 0x34e Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_macro 0x00012995 0x1a6 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .debug_macro 0x00012b3b 0x1a5 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .debug_macro 0x00012ce0 0x1e1 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- .debug_macro 0x00012ec1 0x19f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- .debug_macro 0x00013060 0x1ab Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .debug_macro 0x0001320b 0x1d7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .debug_macro 0x000133e2 0x1a6 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- .debug_macro 0x00013588 0x19f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .debug_macro 0x00013727 0x1ed Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- .debug_macro 0x00013914 0xb4 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ .debug_macro 0x0000fcc4 0x2e Src/usbd_descriptors.o
+ .debug_macro 0x0000fcf2 0x34 Src/usbd_descriptors.o
+ .debug_macro 0x0000fd26 0x316 Src/usbd_config.o
+ .debug_macro 0x0001003c 0x44 Src/usbd_config.o
+ .debug_macro 0x00010080 0x64 Src/usbd_config.o
+ .debug_macro 0x000100e4 0x22 Src/usbd_config.o
+ .debug_macro 0x00010106 0x353 Src/usb_device.o
+ .debug_macro 0x00010459 0x373 Src/upstream_statemachine.o
+ .debug_macro 0x000107cc 0x16 Src/upstream_statemachine.o
+ .debug_macro 0x000107e2 0x1c Src/upstream_statemachine.o
+ .debug_macro 0x000107fe 0x324 Src/upstream_spi.o
+ .debug_macro 0x00010b22 0x1c Src/upstream_spi.o
+ .debug_macro 0x00010b3e 0xa6 Src/upstream_spi.o
+ .debug_macro 0x00010be4 0x31c Src/upstream_msc.o
+ .debug_macro 0x00010f00 0x32a Src/main.o
+ .debug_macro 0x0001122a 0x1b7 Src/led.o
+ .debug_macro 0x000113e1 0x30b Src/interrupts.o
+ .debug_macro 0x000116ec 0x1b1 Src/hal_msp.o
+ .debug_macro 0x0001189d 0x303 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ .debug_macro 0x00011ba0 0x307 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .debug_macro 0x00011ea7 0x307 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ .debug_macro 0x000121ae 0x36f Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_macro 0x0001251d 0x7c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_macro 0x00012599 0x22 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_macro 0x000125bb 0x2f0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ .debug_macro 0x000128ab 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ .debug_macro 0x000128c7 0x34d Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ .debug_macro 0x00012c14 0x34a Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ .debug_macro 0x00012f5e 0x19f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ .debug_macro 0x000130fd 0x1a5 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .debug_macro 0x000132a2 0x1e1 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ .debug_macro 0x00013483 0x19f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ .debug_macro 0x00013622 0x1ab Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ .debug_macro 0x000137cd 0x1d7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ .debug_macro 0x000139a4 0x19f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .debug_macro 0x00013b43 0x1ed Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .debug_macro 0x00013d30 0xb4 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
-.debug_line 0x00000000 0xeaa7
- .debug_line 0x00000000 0x7e9 Src/usbd_descriptors.o
- .debug_line 0x000007e9 0x8e2 Src/usbd_config.o
- .debug_line 0x000010cb 0x787 Src/usb_device.o
- .debug_line 0x00001852 0x725 Src/main.o
- .debug_line 0x00001f77 0x712 Src/interrupts.o
- .debug_line 0x00002689 0x5ae Src/hal_msp.o
- .debug_line 0x00002c37 0x8b1 Src/downstream_spi.o
- .debug_line 0x000034e8 0x7e7 Src/downstream_interface_msc_mock.o
- .debug_line 0x00003ccf 0x762 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- .debug_line 0x00004431 0x8b0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .debug_line 0x00004ce1 0x8c5 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .debug_line 0x000055a6 0xa64 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_line 0x0000600a 0x720 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- .debug_line 0x0000672a 0x8c2 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .debug_line 0x00006fec 0x8a6 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_line 0x00007892 0xaea Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .debug_line 0x0000837c 0xd60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .debug_line 0x000090dc 0x87f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- .debug_line 0x0000995b 0x588 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- .debug_line 0x00009ee3 0xa27 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .debug_line 0x0000a90a 0x69b Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .debug_line 0x0000afa5 0x299d Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- .debug_line 0x0000d942 0x6da Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .debug_line 0x0000e01c 0x6e4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- .debug_line 0x0000e700 0x2fa Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
- .debug_line 0x0000e9fa 0xad Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
+.debug_line 0x00000000 0xd48b
+ .debug_line 0x00000000 0x7ee Src/usbd_descriptors.o
+ .debug_line 0x000007ee 0x904 Src/usbd_config.o
+ .debug_line 0x000010f2 0x784 Src/usb_device.o
+ .debug_line 0x00001876 0x8f0 Src/upstream_statemachine.o
+ .debug_line 0x00002166 0x9be Src/upstream_spi.o
+ .debug_line 0x00002b24 0x85a Src/upstream_msc.o
+ .debug_line 0x0000337e 0x74c Src/main.o
+ .debug_line 0x00003aca 0x579 Src/led.o
+ .debug_line 0x00004043 0x707 Src/interrupts.o
+ .debug_line 0x0000474a 0x594 Src/hal_msp.o
+ .debug_line 0x00004cde 0x768 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ .debug_line 0x00005446 0x919 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .debug_line 0x00005d5f 0x8e0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ .debug_line 0x0000663f 0xa8f Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_line 0x000070ce 0x720 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ .debug_line 0x000077ee 0x8e8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ .debug_line 0x000080d6 0x8b7 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ .debug_line 0x0000898d 0xb86 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ .debug_line 0x00009513 0xd52 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .debug_line 0x0000a265 0x855 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ .debug_line 0x0000aaba 0x58c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ .debug_line 0x0000b046 0xa4f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ .debug_line 0x0000ba95 0x742 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ .debug_line 0x0000c1d7 0x80f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .debug_line 0x0000c9e6 0x6fa Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .debug_line 0x0000d0e0 0x2fe Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ .debug_line 0x0000d3de 0xad Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
-.debug_str 0x00000000 0x68996
- .debug_str 0x00000000 0x641be Src/usbd_descriptors.o
- 0x644d6 (size before relaxing)
- .debug_str 0x000641be 0x106c Src/usbd_config.o
- 0x64b2a (size before relaxing)
- .debug_str 0x0006522a 0x69 Src/usb_device.o
- 0x645a8 (size before relaxing)
- .debug_str 0x00065293 0x52c Src/main.o
- 0x640bf (size before relaxing)
- .debug_str 0x000657bf 0x32b Src/interrupts.o
- 0x6442d (size before relaxing)
- .debug_str 0x00065aea 0x1f9 Src/hal_msp.o
- 0x60fa7 (size before relaxing)
- .debug_str 0x00065ce3 0x4ad Src/downstream_spi.o
- 0x64737 (size before relaxing)
- .debug_str 0x00066190 0x3c4 Src/downstream_interface_msc_mock.o
- 0x63f73 (size before relaxing)
- .debug_str 0x00066554 0xc9 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- 0x63d8f (size before relaxing)
- .debug_str 0x0006661d 0x14c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- 0x63e62 (size before relaxing)
- .debug_str 0x00066769 0x7b Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x63f1e (size before relaxing)
- .debug_str 0x000667e4 0x50f Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x64dc3 (size before relaxing)
- .debug_str 0x00066cf3 0x49 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- 0x6395a (size before relaxing)
- .debug_str 0x00066d3c 0x14b Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x64921 (size before relaxing)
- .debug_str 0x00066e87 0x17f Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x64a14 (size before relaxing)
- .debug_str 0x00067006 0x744 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x609c5 (size before relaxing)
- .debug_str 0x0006774a 0x348 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x6089c (size before relaxing)
- .debug_str 0x00067a92 0x32a Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- 0x60677 (size before relaxing)
- .debug_str 0x00067dbc 0x4a Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- 0x6039b (size before relaxing)
- .debug_str 0x00067e06 0x101 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x60a7c (size before relaxing)
- .debug_str 0x00067f07 0x240 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- 0x6042e (size before relaxing)
- .debug_str 0x00068147 0x127 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- 0x6045d (size before relaxing)
- .debug_str 0x0006826e 0x2c0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- 0x60901 (size before relaxing)
- .debug_str 0x0006852e 0x3df Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- 0x606c2 (size before relaxing)
- .debug_str 0x0006890d 0x89 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
- 0x39fc1 (size before relaxing)
+.debug_str 0x00000000 0x68d8d
+ .debug_str 0x00000000 0x6425d Src/usbd_descriptors.o
+ 0x64575 (size before relaxing)
+ .debug_str 0x0006425d 0xe4b Src/usbd_config.o
+ 0x648d8 (size before relaxing)
+ .debug_str 0x000650a8 0x41 Src/usb_device.o
+ 0x645f6 (size before relaxing)
+ .debug_str 0x000650e9 0x485 Src/upstream_statemachine.o
+ 0x64a7d (size before relaxing)
+ .debug_str 0x0006556e 0xc70 Src/upstream_spi.o
+ 0x64a95 (size before relaxing)
+ .debug_str 0x000661de 0x347 Src/upstream_msc.o
+ 0x6406b (size before relaxing)
+ .debug_str 0x00066525 0x140 Src/main.o
+ 0x64236 (size before relaxing)
+ .debug_str 0x00066665 0x7c Src/led.o
+ 0x604e3 (size before relaxing)
+ .debug_str 0x000666e1 0x74 Src/interrupts.o
+ 0x646d2 (size before relaxing)
+ .debug_str 0x00066755 0x3f Src/hal_msp.o
+ 0x60f2c (size before relaxing)
+ .debug_str 0x00066794 0xc9 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x63d52 (size before relaxing)
+ .debug_str 0x0006685d 0x133 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x63dca (size before relaxing)
+ .debug_str 0x00066990 0x19c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x63e31 (size before relaxing)
+ .debug_str 0x00066b2c 0x50a Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x64c3e (size before relaxing)
+ .debug_str 0x00067036 0x49 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ 0x6395b (size before relaxing)
+ .debug_str 0x0006707f 0x15b Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x648fe (size before relaxing)
+ .debug_str 0x000671da 0x17f Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x649ce (size before relaxing)
+ .debug_str 0x00067359 0x73e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x609c1 (size before relaxing)
+ .debug_str 0x00067a97 0x37a Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x6088b (size before relaxing)
+ .debug_str 0x00067e11 0x343 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x60651 (size before relaxing)
+ .debug_str 0x00068154 0x4a Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ 0x603a7 (size before relaxing)
+ .debug_str 0x0006819e 0x1f5 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x60857 (size before relaxing)
+ .debug_str 0x00068393 0x25e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x6042f (size before relaxing)
+ .debug_str 0x000685f1 0x306 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x60902 (size before relaxing)
+ .debug_str 0x000688f7 0x40d Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x6067f (size before relaxing)
+ .debug_str 0x00068d04 0x89 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ 0x39fc2 (size before relaxing)
.comment 0x00000000 0x70
.comment 0x00000000 0x70 Src/usbd_descriptors.o
0x71 (size before relaxing)
.comment 0x00000000 0x71 Src/usbd_config.o
.comment 0x00000000 0x71 Src/usb_device.o
+ .comment 0x00000000 0x71 Src/upstream_statemachine.o
+ .comment 0x00000000 0x71 Src/upstream_spi.o
+ .comment 0x00000000 0x71 Src/upstream_msc.o
.comment 0x00000000 0x71 Src/main.o
+ .comment 0x00000000 0x71 Src/led.o
.comment 0x00000000 0x71 Src/interrupts.o
.comment 0x00000000 0x71 Src/hal_msp.o
- .comment 0x00000000 0x71 Src/downstream_spi.o
- .comment 0x00000000 0x71 Src/downstream_interface_msc_mock.o
.comment 0x00000000 0x71 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.comment 0x00000000 0x71 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.comment 0x00000000 0x71 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
@@ -4216,7 +4533,6 @@ OUTPUT(Upstream.elf elf32-littlearm)
.comment 0x00000000 0x71 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
.comment 0x00000000 0x71 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.comment 0x00000000 0x71 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .comment 0x00000000 0x71 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.comment 0x00000000 0x71 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.comment 0x00000000 0x71 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.comment 0x00000000 0x71 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
@@ -4230,94 +4546,97 @@ OUTPUT(Upstream.elf elf32-littlearm)
.ARM.attributes
0x00000066 0x33 Src/usb_device.o
.ARM.attributes
- 0x00000099 0x33 Src/main.o
+ 0x00000099 0x33 Src/upstream_statemachine.o
+ .ARM.attributes
+ 0x000000cc 0x33 Src/upstream_spi.o
.ARM.attributes
- 0x000000cc 0x33 Src/interrupts.o
+ 0x000000ff 0x33 Src/upstream_msc.o
.ARM.attributes
- 0x000000ff 0x33 Src/hal_msp.o
+ 0x00000132 0x33 Src/main.o
.ARM.attributes
- 0x00000132 0x33 Src/downstream_spi.o
+ 0x00000165 0x33 Src/led.o
.ARM.attributes
- 0x00000165 0x33 Src/downstream_interface_msc_mock.o
+ 0x00000198 0x33 Src/interrupts.o
.ARM.attributes
- 0x00000198 0x33 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x000001cb 0x33 Src/hal_msp.o
.ARM.attributes
- 0x000001cb 0x33 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x000001fe 0x33 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.ARM.attributes
- 0x000001fe 0x33 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x00000231 0x33 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.ARM.attributes
- 0x00000231 0x33 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x00000264 0x33 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.ARM.attributes
- 0x00000264 0x33 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ 0x00000297 0x33 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.ARM.attributes
- 0x00000297 0x33 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x000002ca 0x33 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
.ARM.attributes
- 0x000002ca 0x33 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x000002fd 0x33 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
.ARM.attributes
- 0x000002fd 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000330 0x33 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.ARM.attributes
- 0x00000330 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000363 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.ARM.attributes
- 0x00000363 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000396 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.ARM.attributes
- 0x00000396 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ 0x000003c9 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.ARM.attributes
- 0x000003c9 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x000003fc 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
.ARM.attributes
- 0x000003fc 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x0000042f 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.ARM.attributes
- 0x0000042f 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x00000462 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.ARM.attributes
- 0x00000462 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x00000495 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.ARM.attributes
- 0x00000495 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x000004c8 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.ARM.attributes
- 0x000004c8 0x33 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ 0x000004fb 0x33 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
.ARM.attributes
- 0x000004fb 0x21 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
+ 0x0000052e 0x21 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
.ARM.attributes
- 0x0000051c 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o)
+ 0x0000054f 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o)
.ARM.attributes
- 0x00000549 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o)
+ 0x0000057c 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o)
.ARM.attributes
- 0x00000576 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
+ 0x000005a9 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
.ARM.attributes
- 0x000005a3 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o)
+ 0x000005d6 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o)
.ARM.attributes
- 0x000005d0 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-impure.o)
+ 0x00000603 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-impure.o)
.ARM.attributes
- 0x000005fd 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o)
+ 0x00000630 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o)
.ARM.attributes
- 0x0000062a 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o)
+ 0x0000065d 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o)
-.debug_frame 0x00000000 0x228c
- .debug_frame 0x00000000 0xa8 Src/usbd_descriptors.o
- .debug_frame 0x000000a8 0x2d4 Src/usbd_config.o
- .debug_frame 0x0000037c 0x28 Src/usb_device.o
- .debug_frame 0x000003a4 0x6c Src/main.o
- .debug_frame 0x00000410 0x88 Src/interrupts.o
- .debug_frame 0x00000498 0x78 Src/hal_msp.o
- .debug_frame 0x00000510 0x138 Src/downstream_spi.o
- .debug_frame 0x00000648 0x118 Src/downstream_interface_msc_mock.o
- .debug_frame 0x00000760 0xc0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- .debug_frame 0x00000820 0x178 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .debug_frame 0x00000998 0x1dc Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .debug_frame 0x00000b74 0x21c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_frame 0x00000d90 0x158 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .debug_frame 0x00000ee8 0xe8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_frame 0x00000fd0 0x47c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .debug_frame 0x0000144c 0x3d8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .debug_frame 0x00001824 0x13c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- .debug_frame 0x00001960 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- .debug_frame 0x0000199c 0x310 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .debug_frame 0x00001cac 0xc0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .debug_frame 0x00001d6c 0x110 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- .debug_frame 0x00001e7c 0x128 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .debug_frame 0x00001fa4 0x188 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- .debug_frame 0x0000212c 0x30 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
- .debug_frame 0x0000215c 0x30 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o)
- .debug_frame 0x0000218c 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o)
- .debug_frame 0x000021b8 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
- .debug_frame 0x000021e4 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o)
- .debug_frame 0x00002210 0x5c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o)
- .debug_frame 0x0000226c 0x20 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o)
+.debug_frame 0x00000000 0x36f4
+ .debug_frame 0x00000000 0x114 Src/usbd_descriptors.o
+ .debug_frame 0x00000114 0x428 Src/usbd_config.o
+ .debug_frame 0x0000053c 0x2c Src/usb_device.o
+ .debug_frame 0x00000568 0xf4 Src/upstream_statemachine.o
+ .debug_frame 0x0000065c 0x21c Src/upstream_spi.o
+ .debug_frame 0x00000878 0x1c0 Src/upstream_msc.o
+ .debug_frame 0x00000a38 0x74 Src/main.o
+ .debug_frame 0x00000aac 0x74 Src/led.o
+ .debug_frame 0x00000b20 0x80 Src/interrupts.o
+ .debug_frame 0x00000ba0 0x74 Src/hal_msp.o
+ .debug_frame 0x00000c14 0x10c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ .debug_frame 0x00000d20 0x210 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .debug_frame 0x00000f30 0x324 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ .debug_frame 0x00001254 0x2e8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_frame 0x0000153c 0x1e8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ .debug_frame 0x00001724 0x188 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ .debug_frame 0x000018ac 0x718 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ .debug_frame 0x00001fc4 0x604 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .debug_frame 0x000025c8 0x204 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ .debug_frame 0x000027cc 0x60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ .debug_frame 0x0000282c 0x508 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ .debug_frame 0x00002d34 0x14c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ .debug_frame 0x00002e80 0x42c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .debug_frame 0x000032ac 0x2c0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .debug_frame 0x0000356c 0x58 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ .debug_frame 0x000035c4 0x30 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o)
+ .debug_frame 0x000035f4 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o)
+ .debug_frame 0x00003620 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
+ .debug_frame 0x0000364c 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o)
+ .debug_frame 0x00003678 0x5c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o)
+ .debug_frame 0x000036d4 0x20 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o)
diff --git a/Upstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c b/Upstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
index b8ee9e0..a72d4d5 100644
--- a/Upstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
+++ b/Upstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
@@ -102,7 +102,7 @@
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
-#define SPI_TIMEOUT_VALUE 10
+#define SPI_TIMEOUT_VALUE 2
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
@@ -2066,14 +2066,14 @@ static void SPI_DMAEndTransmitReceive(SPI_HandleTypeDef *hspi)
if(hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)
{
/* Check if CRC is done on going (RXNE flag set) */
- if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_TIMEOUT_VALUE) == HAL_OK)
- {
+// if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_TIMEOUT_VALUE) == HAL_OK)
+// {
/* Wait until RXNE flag is set to send data */
if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_RXNE, RESET, SPI_TIMEOUT_VALUE) != HAL_OK)
{
hspi->ErrorCode |= HAL_SPI_ERROR_FLAG;
}
- }
+// }
/* Read CRC */
tmpreg = hspi->Instance->DR;
UNUSED(tmpreg);
diff --git a/Upstream/Inc/board_config.h b/Upstream/Inc/board_config.h
index 30fb7a3..37336ae 100644
--- a/Upstream/Inc/board_config.h
+++ b/Upstream/Inc/board_config.h
@@ -30,10 +30,10 @@
#define FAULT_LED_ON STAT_LED_ON
#define FAULT_LED_OFF STAT_LED_OFF
-//#define SPI_DMA_ACTIVE_PIN GPIO_PIN_5 /////////Temporary indicator of SPI & DMA activity
-//#define SPI_DMA_ACTIVE_PORT GPIOB
-//#define SPI_DMA_ACTIVE_ON SPI_DMA_ACTIVE_PORT->BSRR = (SPI_DMA_ACTIVE_PIN << BSRR_SHIFT_LOW)
-//#define SPI_DMA_ACTIVE_OFF SPI_DMA_ACTIVE_PORT->BSRR = (SPI_DMA_ACTIVE_PIN << BSRR_SHIFT_HIGH)
+#define SPI_INT_ACTIVE_PIN GPIO_PIN_5 /////////Temporary indicator of SPI activity
+#define SPI_INT_ACTIVE_PORT GPIOB
+#define SPI_INT_ACTIVE_ON SPI_INT_ACTIVE_PORT->BSRR = (SPI_INT_ACTIVE_PIN << BSRR_SHIFT_HIGH)
+#define SPI_INT_ACTIVE_OFF SPI_INT_ACTIVE_PORT->BSRR = (SPI_INT_ACTIVE_PIN << BSRR_SHIFT_LOW)
#define SPI1_NSS_PIN GPIO_PIN_4
#define SPI1_NSS_PORT GPIOA
diff --git a/Upstream/Inc/interrupts.h b/Upstream/Inc/interrupts.h
index 1fd97e9..963a383 100755
--- a/Upstream/Inc/interrupts.h
+++ b/Upstream/Inc/interrupts.h
@@ -49,8 +49,9 @@
* A lower priority value indicates a higher priority. */
#define INT_PRIORITY_SYSTICK 2
-#define INT_PRIORITY_SPI_DMA 10 //SPI interacts heavily with USB_OTG,
-#define INT_PRIORITY_OTG_FS 10 //so set them at the same priority.
+#define INT_PRIORITY_SPI 8 //SPI is more important than USB now!
+#define INT_PRIORITY_OTG_FS 10
+#define INT_PRIORITY_EXT3I INT_PRIORITY_OTG_FS
/* Exported macro ------------------------------------------------------------*/
@@ -58,8 +59,8 @@
void OTG_FS_IRQHandler(void);
void SysTick_Handler(void);
-void DMA2_Stream2_IRQHandler(void);
-void DMA2_Stream3_IRQHandler(void);
+//void DMA2_Stream2_IRQHandler(void);
+//void DMA2_Stream3_IRQHandler(void);
void EXTI3_IRQHandler(void);
diff --git a/Upstream/Inc/upstream_interface_def.h b/Upstream/Inc/upstream_interface_def.h
index 0745d8c..c0b4115 100644
--- a/Upstream/Inc/upstream_interface_def.h
+++ b/Upstream/Inc/upstream_interface_def.h
@@ -45,8 +45,8 @@ typedef enum
{
COMMAND_MSC_TEST_UNIT_READY, //Returns HAL_StatusTypeDef result
COMMAND_MSC_GET_CAPACITY, //Returns uint32_t blk_nbr, uint32_t blk_size
- COMMAND_MSC_BEGIN_READ, //Returns HAL_StatusTypeDef result, then data stream
- COMMAND_MSC_BEGIN_WRITE, //Returns HAL_OK, HAL_ERROR if medium not present, HAL_BUSY if write-protected result, then waits for data stream
+ COMMAND_MSC_READ, //Returns HAL_StatusTypeDef result, then data stream
+ COMMAND_MSC_WRITE, //Returns HAL_OK, HAL_ERROR if medium not present, HAL_BUSY if write-protected result, then waits for data stream
}
InterfaceCommandMscTypeDef;
diff --git a/Upstream/Inc/upstream_msc.h b/Upstream/Inc/upstream_msc.h
index 94597fa..b21a1df 100644
--- a/Upstream/Inc/upstream_msc.h
+++ b/Upstream/Inc/upstream_msc.h
@@ -14,7 +14,7 @@
typedef void (*UpstreamMSCCallbackTypeDef)(HAL_StatusTypeDef result);
typedef void (*UpstreamMSCCallbackPacketTypeDef)(UpstreamPacketTypeDef* upstreamPacket,
- uint16_t dataLength);
+ uint16_t dataLength8);
typedef void (*UpstreamMSCCallbackUintPacketTypeDef)(UpstreamPacketTypeDef* upstreamPacket,
uint32_t result_uint1,
uint32_t result_uint2);
@@ -28,10 +28,10 @@ HAL_StatusTypeDef Upstream_MSC_BeginRead(UpstreamMSCCallbackTypeDef callback,
uint32_t readByteCount);
HAL_StatusTypeDef Upstream_MSC_GetStreamDataPacket(UpstreamMSCCallbackPacketTypeDef callback);
HAL_StatusTypeDef Upstream_MSC_BeginWrite(UpstreamMSCCallbackTypeDef callback,
- uint64_t readBlockStart,
- uint32_t readBlockCount);
+ uint64_t writeBlockStart,
+ uint32_t writeBlockCount);
HAL_StatusTypeDef Upstream_MSC_PutStreamDataPacket(UpstreamPacketTypeDef* packetToSend,
- uint32_t dataLength);
+ uint32_t dataLength8);
diff --git a/Upstream/Inc/upstream_spi.h b/Upstream/Inc/upstream_spi.h
index 22241c7..628d220 100644
--- a/Upstream/Inc/upstream_spi.h
+++ b/Upstream/Inc/upstream_spi.h
@@ -12,15 +12,19 @@
#include "usbd_config.h"
-#define UPSTREAM_PACKET_HEADER_LEN (2) //Min length = CommandClass & Command bytes
-#define UPSTREAM_PACKET_LEN (UPSTREAM_PACKET_HEADER_LEN + MSC_MEDIA_PACKET)
-#define UPSTREAM_PACKET_LEN_MIN (UPSTREAM_PACKET_HEADER_LEN)
+#define UPSTREAM_PACKET_HEADER_LEN (2) //Min length = CommandClass & Command bytes
+#define UPSTREAM_PACKET_LEN (UPSTREAM_PACKET_HEADER_LEN + MSC_MEDIA_PACKET)
+#define UPSTREAM_PACKET_LEN_MIN (UPSTREAM_PACKET_HEADER_LEN)
+
+#define UPSTREAM_PACKET_HEADER_LEN_16 (UPSTREAM_PACKET_HEADER_LEN / 2)
+#define UPSTREAM_PACKET_LEN_16 (UPSTREAM_PACKET_LEN / 2)
+#define UPSTREAM_PACKET_LEN_MIN_16 (UPSTREAM_PACKET_LEN_MIN / 2)
#define UPSTREAM_SPI_FREAKOUT \
do { \
LED_Fault_SetBlinkRate(LED_FAST_BLINK_RATE); \
- UpstreamInterfaceState = UPSTREAM_INTERFACE_ERROR; \
+ /*UpstreamInterfaceState = UPSTREAM_INTERFACE_ERROR; */ \
Upstream_StateMachine_SetErrorState(); \
while (1); \
} while (0);
@@ -54,11 +58,10 @@ PacketBusyTypeDef;
typedef struct
{
PacketBusyTypeDef Busy; //Everything after Busy should be word-aligned
- uint16_t Length __ALIGN_END; //Packet length includes CommandClass, Command, and Data
+ uint16_t Length16 __ALIGN_END; //Packet length includes CommandClass, Command, and Data
uint8_t CommandClass;
uint8_t Command;
uint8_t Data[MSC_MEDIA_PACKET]; //Should (must?) be word-aligned, for USB copy routine
- uint8_t RxCrc;
}
UpstreamPacketTypeDef;
@@ -75,8 +78,8 @@ void Upstream_ReleasePacket(UpstreamPacketTypeDef* packetToRelease);
HAL_StatusTypeDef Upstream_TransmitPacket(UpstreamPacketTypeDef* packetToWrite);
HAL_StatusTypeDef Upstream_ReceivePacket(SpiPacketReceivedCallbackTypeDef callback);
void Upstream_TxOkInterrupt(void);
-void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi);
-void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi);
+void Upstream_SPIProcess_InterruptSafe(void);
+void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi);
void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi);
diff --git a/Upstream/Inc/upstream_statemachine.h b/Upstream/Inc/upstream_statemachine.h
index 53c64fe..33066b3 100644
--- a/Upstream/Inc/upstream_statemachine.h
+++ b/Upstream/Inc/upstream_statemachine.h
@@ -26,6 +26,7 @@ typedef enum
do { \
LED_Fault_SetBlinkRate(LED_FAST_BLINK_RATE); \
Upstream_StateMachine_SetErrorState(); \
+ while (1); \
} while (0);
diff --git a/Upstream/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.c b/Upstream/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.c
index f444170..959eb8f 100755
--- a/Upstream/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.c
+++ b/Upstream/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.c
@@ -353,6 +353,10 @@ void MSC_BOT_SendCSW (USBD_HandleTypeDef *pdev,
hmsc->csw.bStatus = CSW_Status;
hmsc->bot_state = USBD_BOT_IDLE;
+ //De-register UpstreamPacket* from USB interface,
+ //so we don't unintentionally free it on USB transaction completion.
+ hmsc->bot_packet = NULL;
+
USBD_LL_Transmit (pdev,
MSC_EPIN_ADDR,
(uint8_t *)&hmsc->csw,
diff --git a/Upstream/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.c b/Upstream/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.c
index 3ed5b07..ace3f16 100755
--- a/Upstream/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.c
+++ b/Upstream/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.c
@@ -285,6 +285,7 @@ static void SCSI_Inquiry(void)
}
else
{
+ //Standard INQUIRY data
//Return the same info for any LUN requested
pPage = (uint8_t *)&STORAGE_Inquirydata_FS;
len = pPage[4] + 5;
@@ -589,9 +590,9 @@ static void SCSI_Read10(void)
}
if (Upstream_MSC_BeginRead(SCSI_Read10BeginCallback,
- SCSI_ProcessCmd_hmsc->scsi_blk_addr,
- SCSI_ProcessCmd_hmsc->scsi_blk_len,
- SCSI_ProcessCmd_hmsc->cbw.dDataLength) != HAL_OK)
+ SCSI_ProcessCmd_hmsc->scsi_blk_addr,
+ SCSI_ProcessCmd_hmsc->scsi_blk_len,
+ SCSI_ProcessCmd_hmsc->cbw.dDataLength) != HAL_OK)
{
SCSI_Read10BeginCallback(HAL_ERROR);
}
@@ -667,7 +668,6 @@ void SCSI_Read10ReplyCallback(UpstreamPacketTypeDef* upstreamPacket,
* @param params: Command parameters
* @retval status
*/
-
static void SCSI_Write10(void)
{
uint32_t dataLength;
@@ -715,8 +715,8 @@ static void SCSI_Write10(void)
}
if (Upstream_MSC_BeginWrite(SCSI_Write10BeginCallback,
- SCSI_ProcessCmd_hmsc->scsi_blk_addr,
- SCSI_ProcessCmd_hmsc->scsi_blk_len) != HAL_OK)
+ SCSI_ProcessCmd_hmsc->scsi_blk_addr,
+ SCSI_ProcessCmd_hmsc->scsi_blk_len) != HAL_OK)
{
SCSI_Write10BeginCallback(HAL_ERROR);
}
diff --git a/Upstream/Src/hal_msp.c b/Upstream/Src/hal_msp.c
index ec75a86..b364f67 100755
--- a/Upstream/Src/hal_msp.c
+++ b/Upstream/Src/hal_msp.c
@@ -38,8 +38,8 @@
#include "board_config.h"
-DMA_HandleTypeDef spiTxDmaHandle;
-DMA_HandleTypeDef spiRxDmaHandle;
+//DMA_HandleTypeDef spiTxDmaHandle;
+//DMA_HandleTypeDef spiRxDmaHandle;
/**
@@ -64,7 +64,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
{
/* Peripheral clock enable */
__HAL_RCC_SPI1_CLK_ENABLE();
- __HAL_RCC_DMA2_CLK_ENABLE();
+// __HAL_RCC_DMA2_CLK_ENABLE();
/**SPI1 GPIO Configuration
PA4 ------> GPIO manual slave select
@@ -74,7 +74,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
*/
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Speed = GPIO_SPEED_MEDIUM;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
@@ -82,6 +82,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
SPI1_NSS_DEASSERT;
GPIO_InitStruct.Pin = SPI1_NSS_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(SPI1_NSS_PORT, &GPIO_InitStruct);
//Configure downstream request pin and interrupt
@@ -89,42 +90,46 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
GPIO_InitStruct.Mode = GPIO_MODE_INPUT | GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(DOWNSTREAM_TX_OK_PORT, &GPIO_InitStruct);
- HAL_NVIC_SetPriority(EXTI3_IRQn, INT_PRIORITY_SPI_DMA, 0);
+ HAL_NVIC_SetPriority(EXTI3_IRQn, INT_PRIORITY_EXT3I, 0);
HAL_NVIC_EnableIRQ(EXTI3_IRQn);
- //Prepare Tx DMA stream
- hspi->hdmatx = &spiTxDmaHandle;
- spiTxDmaHandle.Instance = DMA2_Stream3;
- spiTxDmaHandle.Parent = hspi;
- spiTxDmaHandle.Init.Channel = DMA_CHANNEL_3;
- spiTxDmaHandle.Init.Direction = DMA_MEMORY_TO_PERIPH;
- spiTxDmaHandle.Init.PeriphInc = DMA_PINC_DISABLE;
- spiTxDmaHandle.Init.MemInc = DMA_MINC_ENABLE;
- spiTxDmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
- spiTxDmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
- spiTxDmaHandle.Init.Mode = DMA_NORMAL;
- spiTxDmaHandle.Init.Priority = DMA_PRIORITY_MEDIUM;
- spiTxDmaHandle.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- HAL_DMA_Init(&spiTxDmaHandle);
- HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, INT_PRIORITY_SPI_DMA, 0);
- HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn);
-
- //Prepare Rx DMA stream
- hspi->hdmarx = &spiRxDmaHandle;
- spiRxDmaHandle.Instance = DMA2_Stream2;
- spiRxDmaHandle.Parent = hspi;
- spiRxDmaHandle.Init.Channel = DMA_CHANNEL_3;
- spiRxDmaHandle.Init.Direction = DMA_PERIPH_TO_MEMORY;
- spiRxDmaHandle.Init.PeriphInc = DMA_PINC_DISABLE;
- spiRxDmaHandle.Init.MemInc = DMA_MINC_ENABLE;
- spiRxDmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
- spiRxDmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
- spiRxDmaHandle.Init.Mode = DMA_NORMAL;
- spiRxDmaHandle.Init.Priority = DMA_PRIORITY_MEDIUM;
- spiRxDmaHandle.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- HAL_DMA_Init(&spiRxDmaHandle);
- HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, INT_PRIORITY_SPI_DMA, 0);
- HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ //Interrupt-based SPI now!
+ HAL_NVIC_SetPriority(SPI1_IRQn, INT_PRIORITY_SPI, 0);
+ HAL_NVIC_EnableIRQ(SPI1_IRQn);
+
+// //Prepare Tx DMA stream
+// hspi->hdmatx = &spiTxDmaHandle;
+// spiTxDmaHandle.Instance = DMA2_Stream3;
+// spiTxDmaHandle.Parent = hspi;
+// spiTxDmaHandle.Init.Channel = DMA_CHANNEL_3;
+// spiTxDmaHandle.Init.Direction = DMA_MEMORY_TO_PERIPH;
+// spiTxDmaHandle.Init.PeriphInc = DMA_PINC_DISABLE;
+// spiTxDmaHandle.Init.MemInc = DMA_MINC_ENABLE;
+// spiTxDmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; //DMA_PDATAALIGN_BYTE;
+// spiTxDmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; //DMA_MDATAALIGN_BYTE;
+// spiTxDmaHandle.Init.Mode = DMA_NORMAL;
+// spiTxDmaHandle.Init.Priority = DMA_PRIORITY_MEDIUM;
+// spiTxDmaHandle.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+// HAL_DMA_Init(&spiTxDmaHandle);
+// HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, INT_PRIORITY_SPI_DMA, 0);
+// HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn);
+//
+// //Prepare Rx DMA stream
+// hspi->hdmarx = &spiRxDmaHandle;
+// spiRxDmaHandle.Instance = DMA2_Stream2;
+// spiRxDmaHandle.Parent = hspi;
+// spiRxDmaHandle.Init.Channel = DMA_CHANNEL_3;
+// spiRxDmaHandle.Init.Direction = DMA_PERIPH_TO_MEMORY;
+// spiRxDmaHandle.Init.PeriphInc = DMA_PINC_DISABLE;
+// spiRxDmaHandle.Init.MemInc = DMA_MINC_ENABLE;
+// spiRxDmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; //DMA_PDATAALIGN_BYTE;
+// spiRxDmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; //DMA_MDATAALIGN_BYTE;
+// spiRxDmaHandle.Init.Mode = DMA_NORMAL;
+// spiRxDmaHandle.Init.Priority = DMA_PRIORITY_MEDIUM;
+// spiRxDmaHandle.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+// HAL_DMA_Init(&spiRxDmaHandle);
+// HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, INT_PRIORITY_SPI_DMA, 0);
+// HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
}
}
@@ -135,7 +140,7 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
{
/* Peripheral clock disable */
__HAL_RCC_SPI1_CLK_DISABLE();
- __HAL_RCC_DMA2_CLK_DISABLE();
+// __HAL_RCC_DMA2_CLK_DISABLE();
/**SPI1 GPIO Configuration
PA4 ------> SPI1_NSS
@@ -144,11 +149,11 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
PA7 ------> SPI1_MOSI
*/
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
- HAL_DMA_DeInit(&spiTxDmaHandle);
- HAL_DMA_DeInit(&spiRxDmaHandle);
-
- HAL_NVIC_DisableIRQ(DMA2_Stream3_IRQn);
- HAL_NVIC_DisableIRQ(DMA2_Stream2_IRQn);
+// HAL_DMA_DeInit(&spiTxDmaHandle);
+// HAL_DMA_DeInit(&spiRxDmaHandle);
+//
+// HAL_NVIC_DisableIRQ(DMA2_Stream3_IRQn);
+// HAL_NVIC_DisableIRQ(DMA2_Stream2_IRQn);
}
}
diff --git a/Upstream/Src/interrupts.c b/Upstream/Src/interrupts.c
index 5ee1148..0ff25c7 100755
--- a/Upstream/Src/interrupts.c
+++ b/Upstream/Src/interrupts.c
@@ -45,8 +45,10 @@
/* External variables --------------------------------------------------------*/
extern PCD_HandleTypeDef hpcd_USB_OTG_FS;
-extern DMA_HandleTypeDef spiTxDmaHandle;
-extern DMA_HandleTypeDef spiRxDmaHandle;
+extern SPI_HandleTypeDef Hspi1;
+
+//extern DMA_HandleTypeDef spiTxDmaHandle;
+//extern DMA_HandleTypeDef spiRxDmaHandle;
/******************************************************************************/
@@ -66,34 +68,38 @@ void SysTick_Handler(void)
/////////////////////////
void OTG_FS_IRQHandler(void)
{
- //STAT_LED_ON; //blink STAT LED while processing interrupt
HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS);
- //STAT_LED_OFF;
}
-void DMA2_Stream2_IRQHandler(void)
-{
- //SPI_DMA_ACTIVE_ON;
- HAL_DMA_IRQHandler(&spiRxDmaHandle);
- //SPI_DMA_ACTIVE_OFF;
-}
-
-void DMA2_Stream3_IRQHandler(void)
-{
- //SPI_DMA_ACTIVE_ON;
- HAL_DMA_IRQHandler(&spiTxDmaHandle);
- //SPI_DMA_ACTIVE_OFF;
-}
+//void DMA2_Stream2_IRQHandler(void)
+//{
+// //SPI_DMA_ACTIVE_ON;
+// HAL_DMA_IRQHandler(&spiRxDmaHandle);
+// //SPI_DMA_ACTIVE_OFF;
+//}
+//
+//void DMA2_Stream3_IRQHandler(void)
+//{
+// //SPI_DMA_ACTIVE_ON;
+// HAL_DMA_IRQHandler(&spiTxDmaHandle);
+// //SPI_DMA_ACTIVE_OFF;
+//}
void EXTI3_IRQHandler(void)
{
- //SPI_DMA_ACTIVE_ON;
- __HAL_GPIO_EXTI_CLEAR_IT(3);
+ __HAL_GPIO_EXTI_CLEAR_IT(DOWNSTREAM_TX_OK_PIN);
Upstream_TxOkInterrupt();
- //SPI_DMA_ACTIVE_OFF;
}
/////////////////////////
/////////////////////////
+void SPI1_IRQHandler(void)
+{
+ SPI_INT_ACTIVE_ON;
+ HAL_SPI_IRQHandler(&Hspi1);
+ SPI_INT_ACTIVE_OFF;
+}
+
+
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Upstream/Src/main.c b/Upstream/Src/main.c
index 72c640b..77686d1 100755
--- a/Upstream/Src/main.c
+++ b/Upstream/Src/main.c
@@ -38,6 +38,7 @@
#include "board_config.h"
#include "led.h"
#include "upstream_statemachine.h"
+#include "upstream_spi.h"
/* Private variables ---------------------------------------------------------*/
@@ -68,10 +69,11 @@ int main(void)
while (1)
{
-
+ Upstream_SPIProcess_InterruptSafe();
}
}
+
/** System Clock Configuration
*/
void SystemClock_Config(void)
@@ -151,12 +153,12 @@ void GPIO_Init(void)
HAL_GPIO_Init(STAT_LED_PORT, &GPIO_InitStruct);
STAT_LED_OFF;
-// //SPI_DMA_ACTIVE indicator
-// GPIO_InitStruct.Pin = SPI_DMA_ACTIVE_PIN;
-// GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
-// GPIO_InitStruct.Pull = GPIO_NOPULL;
-// HAL_GPIO_Init(SPI_DMA_ACTIVE_PORT, &GPIO_InitStruct);
-// SPI_DMA_ACTIVE_OFF;
+ //SPI_INT_ACTIVE indicator
+ GPIO_InitStruct.Pin = SPI_INT_ACTIVE_PIN;
+ //GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ //GPIO_InitStruct.Pull = GPIO_NOPULL;
+ HAL_GPIO_Init(SPI_INT_ACTIVE_PORT, &GPIO_InitStruct);
+ SPI_INT_ACTIVE_OFF;
}
/* USER CODE BEGIN 4 */
diff --git a/Upstream/Src/upstream_msc.c b/Upstream/Src/upstream_msc.c
index a2ecb0f..07264fc 100644
--- a/Upstream/Src/upstream_msc.c
+++ b/Upstream/Src/upstream_msc.c
@@ -17,46 +17,59 @@
UpstreamMSCCallbackTypeDef TestReadyCallback;
UpstreamMSCCallbackUintPacketTypeDef GetCapacityCallback;
UpstreamMSCCallbackPacketTypeDef GetStreamDataCallback;
+uint64_t BlockStart;
+uint32_t BlockCount;
uint32_t ByteCount;
+
UpstreamPacketTypeDef* ReadStreamPacket;
uint8_t ReadStreamBusy;
+static void Upstream_MSC_TestReadyFreePacketCallback(UpstreamPacketTypeDef* freePacket);
static void Upstream_MSC_TestReadyReplyCallback(UpstreamPacketTypeDef* replyPacket);
static void Upstream_MSC_GetCapacityReplyCallback(UpstreamPacketTypeDef* replyPacket);
static void Upstream_MSC_GetStreamDataPacketCallback(UpstreamPacketTypeDef* replyPacket);
+static void Upstream_MSC_BeginWriteFreePacketCallback(UpstreamPacketTypeDef* freePacket);
static void Upstream_MSC_BeginWriteReplyCallback(UpstreamPacketTypeDef* replyPacket);
HAL_StatusTypeDef Upstream_MSC_TestReady(UpstreamMSCCallbackTypeDef callback)
{
- UpstreamPacketTypeDef* freePacket;
-
if (Upstream_StateMachine_CheckClassOperationOk() != HAL_OK)
{
return HAL_ERROR;
}
TestReadyCallback = callback;
- freePacket = Upstream_GetFreePacketImmediately();
- if (freePacket == NULL)
- {
- return HAL_ERROR;
- }
+ return Upstream_GetFreePacket(Upstream_MSC_TestReadyFreePacketCallback);
+}
+
- freePacket->Length = UPSTREAM_PACKET_HEADER_LEN;
+
+void Upstream_MSC_TestReadyFreePacketCallback(UpstreamPacketTypeDef* freePacket)
+{
+ freePacket->Length16 = UPSTREAM_PACKET_HEADER_LEN_16;
freePacket->CommandClass = COMMAND_CLASS_MASS_STORAGE;
freePacket->Command = COMMAND_MSC_TEST_UNIT_READY;
+
if (Upstream_TransmitPacket(freePacket) == HAL_OK)
{
- return Upstream_ReceivePacket(Upstream_MSC_TestReadyReplyCallback);
+ Upstream_ReleasePacket(freePacket);
+ if (Upstream_ReceivePacket(Upstream_MSC_TestReadyReplyCallback) != HAL_OK)
+ {
+ TestReadyCallback(HAL_ERROR);
+ }
+ return;
}
+
//else:
- return HAL_ERROR;
+ Upstream_ReleasePacket(freePacket);
+ TestReadyCallback(HAL_ERROR);
}
+
void Upstream_MSC_TestReadyReplyCallback(UpstreamPacketTypeDef* replyPacket)
{
if (Upstream_StateMachine_CheckClassOperationOk() != HAL_OK)
@@ -70,7 +83,7 @@ void Upstream_MSC_TestReadyReplyCallback(UpstreamPacketTypeDef* replyPacket)
return;
}
- if ((replyPacket->Length != (UPSTREAM_PACKET_HEADER_LEN + 1)) ||
+ if ((replyPacket->Length16 != (UPSTREAM_PACKET_HEADER_LEN_16 + 1)) ||
(replyPacket->Data[0] != HAL_OK))
{
Upstream_ReleasePacket(replyPacket);
@@ -100,7 +113,7 @@ HAL_StatusTypeDef Upstream_MSC_GetCapacity(UpstreamMSCCallbackUintPacketTypeDef
return HAL_ERROR;
}
- freePacket->Length = UPSTREAM_PACKET_HEADER_LEN;
+ freePacket->Length16 = UPSTREAM_PACKET_HEADER_LEN_16;
freePacket->CommandClass = COMMAND_CLASS_MASS_STORAGE;
freePacket->Command = COMMAND_MSC_GET_CAPACITY;
if (Upstream_TransmitPacket(freePacket) == HAL_OK)
@@ -128,7 +141,7 @@ void Upstream_MSC_GetCapacityReplyCallback(UpstreamPacketTypeDef* replyPacket)
return;
}
- if (replyPacket->Length != (UPSTREAM_PACKET_HEADER_LEN + 8))
+ if (replyPacket->Length16 != (UPSTREAM_PACKET_HEADER_LEN_16 + (8 / 2)))
{
GetCapacityCallback(NULL, 0, 0);
return;
@@ -164,9 +177,9 @@ HAL_StatusTypeDef Upstream_MSC_BeginRead(UpstreamMSCCallbackTypeDef callback,
return HAL_ERROR;
}
- freePacket->Length = UPSTREAM_PACKET_HEADER_LEN + (4 * 3);
+ freePacket->Length16 = UPSTREAM_PACKET_HEADER_LEN_16 + ((4 * 3) / 2);
freePacket->CommandClass = COMMAND_CLASS_MASS_STORAGE;
- freePacket->Command = COMMAND_MSC_BEGIN_READ;
+ freePacket->Command = COMMAND_MSC_READ;
*(uint64_t*)&(freePacket->Data[0]) = readBlockStart;
*(uint32_t*)&(freePacket->Data[8]) = readBlockCount;
@@ -204,9 +217,10 @@ HAL_StatusTypeDef Upstream_MSC_GetStreamDataPacket(UpstreamMSCCallbackPacketType
}
+
void Upstream_MSC_GetStreamDataPacketCallback(UpstreamPacketTypeDef* replyPacket)
{
- uint16_t dataLength;
+ uint16_t dataLength8;
ReadStreamBusy = 0;
@@ -227,59 +241,68 @@ void Upstream_MSC_GetStreamDataPacketCallback(UpstreamPacketTypeDef* replyPacket
return;
}
- dataLength = replyPacket->Length - UPSTREAM_PACKET_HEADER_LEN;
+ dataLength8 = (replyPacket->Length16 - UPSTREAM_PACKET_HEADER_LEN_16) * 2;
if (((replyPacket->CommandClass & COMMAND_CLASS_DATA_FLAG) == 0) || //Any 'command' reply (as opposed to 'data' reply) is an automatic fail here
- (replyPacket->Length <= UPSTREAM_PACKET_HEADER_LEN) || //Should be at least one data byte in the reply.
- (dataLength > ByteCount)) //No more data than expected transfer length
+ (replyPacket->Length16 <= UPSTREAM_PACKET_HEADER_LEN_16) || //Should be at least one data byte in the reply.
+ (dataLength8 > ByteCount)) //No more data than expected transfer length
{
GetStreamDataCallback(NULL, 0);
return;
}
- ByteCount -= dataLength;
- GetStreamDataCallback(replyPacket, dataLength); //usb_msc_scsi will use this packet, so don't release now
+ ByteCount -= dataLength8;
+ GetStreamDataCallback(replyPacket, dataLength8); //usb_msc_scsi will use this packet, so don't release now
if (ByteCount > 0)
{
- Upstream_MSC_GetStreamDataPacket(NULL); //Try to get the next packet now, before USB asks for it
+ Upstream_MSC_GetStreamDataPacket(NULL); //Try to get the next packet now, before USB asks for it
}
}
HAL_StatusTypeDef Upstream_MSC_BeginWrite(UpstreamMSCCallbackTypeDef callback,
- uint64_t readBlockStart,
- uint32_t readBlockCount)
+ uint64_t writeBlockStart,
+ uint32_t writeBlockCount)
{
- UpstreamPacketTypeDef* freePacket;
-
if (Upstream_StateMachine_CheckClassOperationOk() != HAL_OK)
{
return HAL_ERROR;
}
+ BlockStart = writeBlockStart;
+ BlockCount = writeBlockCount;
TestReadyCallback = callback;
- freePacket = Upstream_GetFreePacketImmediately();
- if (freePacket == NULL)
- {
- return HAL_ERROR;
- }
+ return Upstream_GetFreePacket(Upstream_MSC_BeginWriteFreePacketCallback);
+}
+
+
- freePacket->Length = UPSTREAM_PACKET_HEADER_LEN + (4 * 3);
+void Upstream_MSC_BeginWriteFreePacketCallback(UpstreamPacketTypeDef* freePacket)
+{
+ freePacket->Length16 = UPSTREAM_PACKET_HEADER_LEN_16 + ((4 * 3) / 2);
freePacket->CommandClass = COMMAND_CLASS_MASS_STORAGE;
- freePacket->Command = COMMAND_MSC_BEGIN_WRITE;
- *(uint64_t*)&(freePacket->Data[0]) = readBlockStart;
- *(uint32_t*)&(freePacket->Data[8]) = readBlockCount;
+ freePacket->Command = COMMAND_MSC_WRITE;
+ *(uint64_t*)&(freePacket->Data[0]) = BlockStart;
+ *(uint32_t*)&(freePacket->Data[8]) = BlockCount;
if (Upstream_TransmitPacket(freePacket) == HAL_OK)
{
- return Upstream_ReceivePacket(Upstream_MSC_BeginWriteReplyCallback);
+ Upstream_ReleasePacket(freePacket);
+ if (Upstream_ReceivePacket(Upstream_MSC_BeginWriteReplyCallback) != HAL_OK)
+ {
+ TestReadyCallback(HAL_ERROR);
+ }
+ return;
}
+
//else:
- return HAL_ERROR;
+ Upstream_ReleasePacket(freePacket);
+ TestReadyCallback(HAL_ERROR);
}
+
void Upstream_MSC_BeginWriteReplyCallback(UpstreamPacketTypeDef* replyPacket)
{
uint8_t tempResult;
@@ -295,7 +318,7 @@ void Upstream_MSC_BeginWriteReplyCallback(UpstreamPacketTypeDef* replyPacket)
return;
}
- if ((replyPacket->Length != (UPSTREAM_PACKET_HEADER_LEN + 1)) ||
+ if ((replyPacket->Length16 != (UPSTREAM_PACKET_HEADER_LEN_16 + 1)) ||
((replyPacket->Data[0] != HAL_OK) && (replyPacket->Data[0] != HAL_BUSY)))
{
Upstream_ReleasePacket(replyPacket);
@@ -311,16 +334,21 @@ void Upstream_MSC_BeginWriteReplyCallback(UpstreamPacketTypeDef* replyPacket)
HAL_StatusTypeDef Upstream_MSC_PutStreamDataPacket(UpstreamPacketTypeDef* packetToSend,
- uint32_t dataLength)
+ uint32_t dataLength8)
{
if (Upstream_StateMachine_CheckClassOperationOk() != HAL_OK)
{
return HAL_ERROR;
}
- packetToSend->Length = dataLength + UPSTREAM_PACKET_HEADER_LEN;
+ if ((dataLength8 % 2) != 0)
+ {
+ return HAL_ERROR;
+ }
+
+ packetToSend->Length16 = (dataLength8 / 2) + UPSTREAM_PACKET_HEADER_LEN_16;
packetToSend->CommandClass = COMMAND_CLASS_MASS_STORAGE | COMMAND_CLASS_DATA_FLAG;
- packetToSend->Command = COMMAND_MSC_BEGIN_WRITE;
+ packetToSend->Command = COMMAND_MSC_WRITE;
return Upstream_TransmitPacket(packetToSend);
}
diff --git a/Upstream/Src/upstream_spi.c b/Upstream/Src/upstream_spi.c
index f7ecee6..db82b93 100644
--- a/Upstream/Src/upstream_spi.c
+++ b/Upstream/Src/upstream_spi.c
@@ -11,6 +11,7 @@
#include "stm32f4xx_hal.h"
#include "usbd_def.h"
#include "board_config.h"
+#include "interrupts.h"
@@ -24,7 +25,9 @@ InterfaceStateTypeDef UpstreamInterfaceState = UPSTREAM_INTERFACE_IDLE;
FreePacketCallbackTypeDef PendingFreePacketCallback = NULL; //Indicates someone is waiting for a packet buffer to become available
SpiPacketReceivedCallbackTypeDef ReceivePacketCallback = NULL; //Indicates someone is waiting for a received packet
+uint32_t TemporaryIncomingPacketLength; //We don't actually care about what Downstream sends us when we are transmitting. We just need somewhere to put it so that our own packet length is not overwritten.
uint8_t TxOkInterruptReceived = 0;
+uint8_t SpiInterruptCompleted = 0;
uint8_t SentCommandClass;
uint8_t SentCommand;
@@ -34,6 +37,7 @@ void Upstream_BeginTransmitPacketBody(void);
HAL_StatusTypeDef Upstream_CheckBeginPacketReception(void);
void Upstream_BeginReceivePacketSize(UpstreamPacketTypeDef* freePacket);
void Upstream_BeginReceivePacketBody(void);
+void Upstream_SPIProcess(void);
@@ -46,7 +50,7 @@ void Upstream_InitSPI(void)
Hspi1.State = HAL_SPI_STATE_RESET;
Hspi1.Init.Mode = SPI_MODE_MASTER;
Hspi1.Init.Direction = SPI_DIRECTION_2LINES;
- Hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
+ Hspi1.Init.DataSize = SPI_DATASIZE_16BIT;
Hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
Hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
Hspi1.Init.NSS = SPI_NSS_SOFT;
@@ -56,6 +60,11 @@ void Upstream_InitSPI(void)
Hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_ENABLED;
Hspi1.Init.CRCPolynomial = SPI_CRC_DEFAULTPOLYNOMIAL;
HAL_SPI_Init(&Hspi1);
+
+ if (DOWNSTREAM_TX_OK_ACTIVE)
+ {
+ TxOkInterruptReceived = 1;
+ }
}
@@ -169,8 +178,8 @@ HAL_StatusTypeDef Upstream_TransmitPacket(UpstreamPacketTypeDef* packetToWrite)
return HAL_ERROR;
}
if ((packetToWrite->Busy != BUSY) ||
- (packetToWrite->Length < UPSTREAM_PACKET_LEN_MIN) ||
- (packetToWrite->Length > UPSTREAM_PACKET_LEN))
+ (packetToWrite->Length16 < UPSTREAM_PACKET_LEN_MIN_16) ||
+ (packetToWrite->Length16 > UPSTREAM_PACKET_LEN_16))
{
UPSTREAM_SPI_FREAKOUT;
return HAL_ERROR;
@@ -214,10 +223,45 @@ HAL_StatusTypeDef Upstream_TransmitPacket(UpstreamPacketTypeDef* packetToWrite)
-//Called at the end of the SPI TX DMA transfer,
-//at DMA2 interrupt priority. Assume *hspi points to our hspi1.
-void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
+//Called at the end of the SPI TxRx transfer,
+//at SPI1 interrupt priority. Assume *hspi points to our hspi1.
+//We TxRx our outgoing packet because the SPI hardware freaks out if we only Tx it :-/
+void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
+{
+ SpiInterruptCompleted = 1;
+
+ //Elevate priority here to stop EXT3I sneaking in
+ //before we have a chance to process UpstreamInterfaceState change.
+ __set_BASEPRI(INT_PRIORITY_OTG_FS << (8 - __NVIC_PRIO_BITS));
+}
+
+
+
+//Preemption protection wrapper around Upstream_SPIProcess()
+//We must protect against preemption by USB and EXT3 interrupts at priority 10!
+void Upstream_SPIProcess_InterruptSafe(void)
+{
+ //This is done on SPI interrupt callback...
+ //__set_BASEPRI(INT_PRIORITY_OTG_FS << (8 - __NVIC_PRIO_BITS));
+
+ if (SpiInterruptCompleted == 0)
+ {
+ return;
+ }
+ SpiInterruptCompleted = 0;
+ Upstream_SPIProcess();
+ __set_BASEPRI(0);
+}
+
+
+
+//Called from main().
+//Must be protected against preemption by USB and EXT3 interrupts at priority 10!
+void Upstream_SPIProcess(void)
{
+ SpiPacketReceivedCallbackTypeDef tempPacketCallback;
+ UpstreamPacketTypeDef* tempPacketToFree;
+
SPI1_NSS_DEASSERT;
if (UpstreamInterfaceState >= UPSTREAM_INTERFACE_ERROR)
@@ -246,11 +290,8 @@ void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
return;
}
- Upstream_ReleasePacket(CurrentWorkingPacket);
- if (UpstreamInterfaceState == UPSTREAM_INTERFACE_ERROR)
- {
- return; //Really shouldn't happen, but we are being paranoid...
- }
+ tempPacketToFree = CurrentWorkingPacket;
+
if (NextTxPacket != NULL)
{
//NextTxPacket has already passed the checks in Upstream_TransmitPacket.
@@ -258,22 +299,84 @@ void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
UpstreamInterfaceState = UPSTREAM_INTERFACE_TX_SIZE_WAIT;
CurrentWorkingPacket = NextTxPacket;
NextTxPacket = NULL;
+ SentCommandClass = CurrentWorkingPacket->CommandClass;
+ SentCommand = CurrentWorkingPacket->Command;
if (TxOkInterruptReceived)
{
TxOkInterruptReceived = 0;
Upstream_BeginTransmitPacketSize();
}
+ }
+ else
+ {
+ //No packet queued for transmission:
+ UpstreamInterfaceState = UPSTREAM_INTERFACE_IDLE;
+ if (ReceivePacketCallback != NULL)
+ {
+ Upstream_CheckBeginPacketReception();
+ }
+ }
+
+ //Release old packet after moving Next to Current
+ Upstream_ReleasePacket(tempPacketToFree);
+ return;
+ }
+
+
+
+ if (UpstreamInterfaceState == UPSTREAM_INTERFACE_RX_SIZE)
+ {
+ if ((CurrentWorkingPacket->Length16 < UPSTREAM_PACKET_LEN_MIN_16) ||
+ (CurrentWorkingPacket->Length16 > UPSTREAM_PACKET_LEN_16))
+ {
+ UPSTREAM_SPI_FREAKOUT;
return;
}
+ UpstreamInterfaceState = UPSTREAM_INTERFACE_RX_PACKET_WAIT;
+ if (TxOkInterruptReceived)
+ {
+ TxOkInterruptReceived = 0;
+ Upstream_BeginReceivePacketBody();
+ }
+ return;
+ }
+ if (UpstreamInterfaceState == UPSTREAM_INTERFACE_RX_PACKET)
+ {
UpstreamInterfaceState = UPSTREAM_INTERFACE_IDLE;
- if (ReceivePacketCallback != NULL)
+ if (ReceivePacketCallback == NULL)
{
- Upstream_CheckBeginPacketReception();
+ UPSTREAM_SPI_FREAKOUT;
+ return;
}
+
+ if ((CurrentWorkingPacket->CommandClass == COMMAND_CLASS_ERROR) &&
+ (CurrentWorkingPacket->Command == COMMAND_ERROR_DEVICE_DISCONNECTED))
+ {
+ Upstream_ReleasePacket(CurrentWorkingPacket);
+ ReceivePacketCallback = NULL;
+ Upstream_StateMachine_DeviceDisconnected();
+ return;
+ }
+
+ if (((CurrentWorkingPacket->CommandClass & COMMAND_CLASS_MASK) != (SentCommandClass & COMMAND_CLASS_MASK)) ||
+ (CurrentWorkingPacket->Command != SentCommand))
+ {
+ UPSTREAM_SPI_FREAKOUT;
+ Upstream_ReleasePacket(CurrentWorkingPacket);
+ CurrentWorkingPacket = NULL; //Call back with a NULL packet to indicate error
+ }
+
+ //USB interface may want to receive another packet immediately,
+ //so clear ReceivePacketCallback before the call.
+ //It is the callback's responsibility to release the packet buffer we are passing to it!
+ tempPacketCallback = ReceivePacketCallback;
+ ReceivePacketCallback = NULL;
+ tempPacketCallback(CurrentWorkingPacket);
return;
}
-
+
+
//case default:
UPSTREAM_SPI_FREAKOUT;
}
@@ -368,9 +471,10 @@ void Upstream_BeginTransmitPacketSize(void)
{
UpstreamInterfaceState = UPSTREAM_INTERFACE_TX_SIZE;
SPI1_NSS_ASSERT;
- if (HAL_SPI_Transmit_DMA(&Hspi1,
- (uint8_t*)&CurrentWorkingPacket->Length,
- 2) != HAL_OK)
+ if (HAL_SPI_TransmitReceive_IT(&Hspi1,
+ (uint8_t*)&CurrentWorkingPacket->Length16,
+ (uint8_t*)&TemporaryIncomingPacketLength,
+ 2) != HAL_OK) //We only need to write one word, but the peripheral library freaks out...
{
UPSTREAM_SPI_FREAKOUT;
}
@@ -381,9 +485,11 @@ void Upstream_BeginTransmitPacketBody(void)
{
UpstreamInterfaceState = UPSTREAM_INTERFACE_TX_PACKET;
SPI1_NSS_ASSERT;
- if ((HAL_SPI_Transmit_DMA(&Hspi1,
- &CurrentWorkingPacket->CommandClass,
- CurrentWorkingPacket->Length)) != HAL_OK)
+
+ if (HAL_SPI_TransmitReceive_IT(&Hspi1,
+ &CurrentWorkingPacket->CommandClass,
+ &CurrentWorkingPacket->CommandClass,
+ ((CurrentWorkingPacket->Length16 < 2) ? 2 : CurrentWorkingPacket->Length16)) != HAL_OK)
{
UPSTREAM_SPI_FREAKOUT;
}
@@ -406,11 +512,13 @@ void Upstream_BeginReceivePacketSize(UpstreamPacketTypeDef* freePacket)
}
UpstreamInterfaceState = UPSTREAM_INTERFACE_RX_SIZE;
CurrentWorkingPacket = freePacket;
- CurrentWorkingPacket->Length = 0; //Our RX buffer is used by HAL_SPI_Receive_DMA as dummy TX data, we set Length to 0 so downstream will know this is a dummy packet.
+ CurrentWorkingPacket->Length16 = 0; //Our RX buffer is used by HAL_SPI_Receive_DMA as dummy TX data, we set Length to 0 so downstream will know this is a dummy packet.
SPI1_NSS_ASSERT;
- if (HAL_SPI_Receive_DMA(&Hspi1,
- (uint8_t*)&CurrentWorkingPacket->Length,
- (2 + 1)) != HAL_OK) //"When the CRC feature is enabled the pData Length must be Size + 1"
+ TemporaryIncomingPacketLength = 0;
+ if (HAL_SPI_TransmitReceive_IT(&Hspi1,
+ (uint8_t*)&TemporaryIncomingPacketLength,
+ (uint8_t*)&CurrentWorkingPacket->Length16,
+ 2) != HAL_OK) //We only need to write one word, but the peripheral library freaks out...
{
UPSTREAM_SPI_FREAKOUT;
}
@@ -421,84 +529,16 @@ void Upstream_BeginReceivePacketBody(void)
{
UpstreamInterfaceState = UPSTREAM_INTERFACE_RX_PACKET;
SPI1_NSS_ASSERT;
- if ((HAL_SPI_Receive_DMA(&Hspi1,
- &CurrentWorkingPacket->CommandClass,
- (CurrentWorkingPacket->Length + 1))) != HAL_OK) //"When the CRC feature is enabled the pData Length must be Size + 1"
+ if (HAL_SPI_TransmitReceive_IT(&Hspi1,
+ &CurrentWorkingPacket->CommandClass,
+ &CurrentWorkingPacket->CommandClass,
+ ((CurrentWorkingPacket->Length16 < 2) ? 2 : CurrentWorkingPacket->Length16)) != HAL_OK)
{
UPSTREAM_SPI_FREAKOUT;
}
}
-//Called at the end of the SPI RX DMA transfer,
-//at DMA2 interrupt priority. Assume *hspi points to our hspi1.
-void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)
-{
- SpiPacketReceivedCallbackTypeDef tempPacketCallback;
-
- SPI1_NSS_DEASSERT;
-
- if (UpstreamInterfaceState >= UPSTREAM_INTERFACE_ERROR)
- {
- return;
- }
-
- if (UpstreamInterfaceState == UPSTREAM_INTERFACE_RX_SIZE)
- {
- if ((CurrentWorkingPacket->Length < UPSTREAM_PACKET_LEN_MIN) ||
- (CurrentWorkingPacket->Length > UPSTREAM_PACKET_LEN))
- {
- UPSTREAM_SPI_FREAKOUT;
- return;
- }
- UpstreamInterfaceState = UPSTREAM_INTERFACE_RX_PACKET_WAIT;
- if (TxOkInterruptReceived)
- {
- TxOkInterruptReceived = 0;
- Upstream_BeginReceivePacketBody();
- }
- return;
- }
-
- if (UpstreamInterfaceState == UPSTREAM_INTERFACE_RX_PACKET)
- {
- UpstreamInterfaceState = UPSTREAM_INTERFACE_IDLE;
- if (ReceivePacketCallback == NULL)
- {
- UPSTREAM_SPI_FREAKOUT;
- return;
- }
-
- if ((CurrentWorkingPacket->CommandClass == COMMAND_CLASS_ERROR) &&
- (CurrentWorkingPacket->Command == COMMAND_ERROR_DEVICE_DISCONNECTED))
- {
- Upstream_ReleasePacket(CurrentWorkingPacket);
- ReceivePacketCallback = NULL;
- Upstream_StateMachine_DeviceDisconnected();
- return;
- }
-
- if (((CurrentWorkingPacket->CommandClass & COMMAND_CLASS_MASK) != SentCommandClass) ||
- (CurrentWorkingPacket->Command != SentCommand))
- {
- UPSTREAM_SPI_FREAKOUT;
- Upstream_ReleasePacket(CurrentWorkingPacket);
- CurrentWorkingPacket = NULL; //Call back with a NULL packet to indicate error
- }
-
- //USB interface may want to receive another packet immediately,
- //so clear ReceivePacketCallback before the call.
- //It is the callback's responsibility to release the packet buffer we are passing to it!
- tempPacketCallback = ReceivePacketCallback;
- ReceivePacketCallback = NULL;
- tempPacketCallback(CurrentWorkingPacket);
- return;
- }
-
- //case default:
- UPSTREAM_SPI_FREAKOUT;
-}
-
//Something bad happened! Possibly CRC error...
void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi)
diff --git a/Upstream/Src/upstream_statemachine.c b/Upstream/Src/upstream_statemachine.c
index bf66935..1f51da5 100644
--- a/Upstream/Src/upstream_statemachine.c
+++ b/Upstream/Src/upstream_statemachine.c
@@ -40,7 +40,7 @@ void Upstream_InitStateMachine(void)
return;
}
- freePacket->Length = UPSTREAM_PACKET_HEADER_LEN + MSC_MEDIA_PACKET;
+ freePacket->Length16 = UPSTREAM_PACKET_LEN_16;
freePacket->CommandClass = COMMAND_CLASS_INTERFACE;
freePacket->Command = COMMAND_INTERFACE_ECHO;
@@ -105,7 +105,7 @@ void Upstream_StateMachine_TestInterfaceReplyCallback(UpstreamPacketTypeDef* rep
return;
}
- if (replyPacket->Length != (UPSTREAM_PACKET_HEADER_LEN + MSC_MEDIA_PACKET))
+ if (replyPacket->Length16 != UPSTREAM_PACKET_LEN_16)
{
UPSTREAM_STATEMACHINE_FREAKOUT;
return;
@@ -130,7 +130,7 @@ void Upstream_StateMachine_TestInterfaceReplyCallback(UpstreamPacketTypeDef* rep
void Upstream_StateMachine_NotifyDevice(UpstreamPacketTypeDef* freePacket)
{
UpstreamState = STATE_WAIT_DEVICE;
- freePacket->Length = UPSTREAM_PACKET_HEADER_LEN;
+ freePacket->Length16 = UPSTREAM_PACKET_HEADER_LEN_16;
freePacket->CommandClass = COMMAND_CLASS_INTERFACE;
freePacket->Command = COMMAND_INTERFACE_NOTIFY_DEVICE;
if (Upstream_TransmitPacket(freePacket) == HAL_OK)
@@ -157,7 +157,7 @@ void Upstream_StateMachine_NotifyDeviceReplyCallback(UpstreamPacketTypeDef* repl
return;
}
- if (replyPacket->Length != (UPSTREAM_PACKET_HEADER_LEN + 1))
+ if (replyPacket->Length16 != (UPSTREAM_PACKET_HEADER_LEN_16 + 1))
{
UPSTREAM_STATEMACHINE_FREAKOUT;
return;
@@ -173,6 +173,8 @@ void Upstream_StateMachine_NotifyDeviceReplyCallback(UpstreamPacketTypeDef* repl
//Add other supported classes here...
}
+ Upstream_ReleasePacket(replyPacket);
+
if (newActiveClass == COMMAND_CLASS_INTERFACE)
{
UPSTREAM_STATEMACHINE_FREAKOUT;
diff --git a/Upstream/Upstream Debug.launch b/Upstream/Upstream Debug.launch
index 7050715..02b5f91 100644
--- a/Upstream/Upstream Debug.launch
+++ b/Upstream/Upstream Debug.launch
@@ -61,6 +61,6 @@
-
+
diff --git a/Upstream/Upstream Release.launch b/Upstream/Upstream Release.launch
new file mode 100644
index 0000000..3819eb6
--- /dev/null
+++ b/Upstream/Upstream Release.launch
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+